1. สินค้า
  2.   HTML
  3.   Python
  4.   Beautiful Soup
 
  

ไลบรารี Python แบบโอเพนซอร์สสำหรับแยกวิเคราะห์ HTML/XML และดึงข้อมูล

Beautiful Soup เป็นไลบรารีการแยกวิเคราะห์ Python แบบโอเพนซอร์สชั้นนำที่แยกวิเคราะห์ HTML/XML ที่ยุ่งเหยิง, ดึงข้อความ/ลิงก์, นำทางโครงสร้างต้นไม้และขับเคลื่อนกระบวนการเว็บสครัปปิ้งสมัยใหม่.

Beautiful Soup คืออะไร?

การทำเว็บสแครปกลายเป็นทักษะสำคัญสำหรับนักวิทยาศาสตร์ข้อมูล นักพัฒนา และนักวิจัยที่ต้องการดึงข้อมูลที่มีคุณค่าจากเว็บไซต์ Beautiful Soup เป็นหนึ่งในไลบรารี Python ที่ได้รับความนิยมและใช้งานง่ายที่สุดสำหรับการแยกวิเคราะห์เอกสาร HTML และ XML ตั้งแต่สร้างขึ้นในปี 2004 เครื่องมือตัวนี้ได้ช่วยโปรแกรมเมอร์ประหยัดเวลานับไม่ถ้วนในโครงการเว็บสแครป API ที่เป็นมิตรของไลบรารีนี้ เอกสารประกอบที่ยอดเยี่ยมและการสนับสนุนจากชุมชนที่กระตือรือร้นทำให้ทั้งผู้เริ่มต้นและนักพัฒนาที่มีประสบการณ์สามารถดึงข้อมูลเว็บได้อย่างมีประสิทธิภาพ

Beautiful Soup เป็นไลบรารีของ Python ที่ออกแบบมาโดยเฉพาะสำหรับการสกัดข้อมูลจากไฟล์ HTML และ XML มันเป็นไลบรารี Python ที่ทรงพลังซึ่งได้ช่วยโปรแกรมเมอร์ประหยัดเวลาหลายชั่วโมงหรือหลายวันในการทำโปรเจกต์การขูดเว็บตั้งแต่ปี 2004 ด้วยเพียงไม่กี่บรรทัดของโค้ด คุณสามารถทำการสอบถามที่ซับซ้อนได้ เช่น ความเรียบง่ายและความง่ายในการใช้งาน การค้นหาลิงก์ทั้งหมด การสกัดเนื้อหาข้อความ การแปลงการเข้ารหัสอัตโนมัติ ความยืดหยุ่นของตัวพาร์เซอร์ การจัดการข้อผิดพลาดที่แข็งแรง การค้นหาและสกัดลิงก์จากหน้าเว็บและอื่น ๆ อีกมากมาย

ไลบรารี Beautiful Soup แปลงงานที่มักทำให้หงุดหงิดในการสกัดข้อมูลจากเอกสาร HTML และ XML ให้เป็นกระบวนการแบบ Pythonic ที่ตรงไปตรงมา โดยแปลงเนื้อหาเว็บที่มีโครงสร้างแย่ให้เป็นต้นไม้การพาร์สที่จัดระเบียบอย่างเป็นระบบ ซึ่งคุณสามารถนำทางและค้นหาได้ด้วยวิธีง่าย ๆ สิ่งที่โดยปกติจะใช้เวลาหลายชั่วโมงในการเขียนโค้ดด้วยตนเอง สามารถทำได้ภายในไม่กี่นาทีด้วย Beautiful Soup มันยังคงเป็นมาตรฐานอุตสาหกรรมสำหรับนักพัฒนา Python ที่เข้าสู่โลกของการขูดเว็บ ความเรียบง่ายของมันร่วมกับพลังของตัวพาร์เซอร์ต่าง ๆ ทำให้เป็นตัวเลือกที่ไม่มีใครเทียบได้สำหรับการสกัดข้อมูลจากเว็บไซต์แบบคงที่

Previous Next

เริ่มต้นกับ Beautiful Soup

วิธีที่แนะนำและง่ายที่สุดในการติดตั้ง Beautiful Soup คือการใช้ pip. โปรดใช้คำสั่งต่อไปนี้เพื่อการติดตั้งที่ราบรื่น.

ติดตั้งไลบรารี Beautiful Soup ผ่าน pip

pip install beautifulsoup4 

คุณก็สามารถติดตั้งด้วยตนเองได้; ดาวน์โหลดไฟล์เวอร์ชันล่าสุดโดยตรงจากหน้าเว็บ Beautiful Soup web page.

ทำงานกับพาร์เซอร์หลายตัว

ไลบรารี Beautiful Soup ไม่ได้ทำการพาร์สทั้งหมดด้วยตนเอง — แต่จะทำงานบนพาร์สเซอร์ที่พัฒนามาแล้ว เช่น Python’s built-in html.parser, พาร์สเซอร์ที่เร็ว lxml, และ html5lib ที่ทำงานคล้ายเบราว์เซอร์ ขึ้นอยู่กับความต้องการ คุณสามารถให้ความสำคัญกับความเร็วหรือการปฏิบัติตามมาตรฐานได้ สถาปัตยกรรมนี้ให้ความยืดหยุ่นในการเลือกพาร์สเซอร์ที่เหมาะสมที่สุดกับความต้องการของคุณ แลกเปลี่ยนความเร็วการพาร์สเพื่อความยืดหยุ่น ทดลองกลยุทธ์การพาร์สต่าง ๆ โดยไม่ต้องเปลี่ยนโค้ด Beautiful Soup ของคุณ และอื่น ๆ โค้ดง่ายต่อไปนี้แสดงให้เห็นว่าผู้พัฒนาสามารถใช้พาร์สเซอร์ต่าง ๆ กับ Beautiful Soup ได้อย่างไร

วิธีใช้ตัวแยกหลายตัวสำหรับการแยกวิเคราะห์เอกสาร HTML ภายในแอป Python?

# Using different parsers with Beautiful Soup
html_doc = "

เนื้อหาตัวอย่าง

" # Using lxml parser (fast) soup_lxml = BeautifulSoup(html_doc, 'lxml') # Using html5lib parser (slower but more lenient) soup_html5lib = BeautifulSoup(html_doc, 'html5lib') # Using Python's built-in parser soup_builtin = BeautifulSoup(html_doc, 'html.parser')

การดึงลิงก์จากหน้าเว็บ

การดึงลิงก์เป็นงานการสเกรปเว็บที่พบบ่อย โดยเฉพาะอย่างยิ่งมีประโยชน์สำหรับการสร้างเว็บครอเลอร์ ไลบรารีโอเพ่นซอร์ส Beautiful Soup ได้รวมการสนับสนุนการโหลดหน้าเว็บและการดึงลิงก์จากหน้าเว็บภายในแอปพลิเคชัน Python ตัวอย่างโค้ดง่าย ๆ ด้านล่างนี้แสดงการดึงหน้าเว็บสดโดยใช้ไลบรารี requests แล้วดึงแท็ก anchor ทั้งหมดภายในแอปพลิเคชัน Python

วิธีดึงลิงก์จากหน้าเว็บโดยใช้ Python ?

from bs4 import BeautifulSoup
import requests

# Fetch a real webpage
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

# Extract all links
links = soup.find_all('a')

print(f"Found {len(links)} links:")
for link in links:
    href = link.get('href')
    text = link.get_text().strip()
    print(f"Text: {text} | URL: {href}")

# Filter links by criteria
external_links = []
for link in soup.find_all('a'):
    href = link.get('href')
    if href and href.startswith('http'):
        external_links.append(href)

print(f"\nFound {len(external_links)} external links")

การค้นหาองค์ประกอบ HTML เฉพาะ

หนึ่งในจุดแข็งที่ใหญ่ที่สุดของ Beautiful Soup คือความเป็นธรรมชาติในการให้คุณค้นหา HTML เหมือนการอ่านภาษาอังกฤษธรรมดา แทนที่จะต้องจัดการกับ API DOM ที่ซับซ้อน คุณเพียงอธิบายสิ่งที่ต้องการ แล้ว Beautiful Soup จะค้นหาให้คุณ สมมติว่าคุณต้องการค้นหาลิงก์ทั้งหมดในหน้าเว็บ คุณสามารถใช้เมธอด find_all ตามที่แสดงในตัวอย่างโค้ดด้านล่าง เมธอดนี้จะคืนรายการของแท็กลิงก์ทั้งหมด จากนั้นเราจะวนลูปผ่านรายการเพื่อดึง URL และข้อความเพื่อให้ได้ชื่อลิงก์ที่มองเห็นได้โดยใช้ Python API

วิธีค้นหาและดึงเอาองค์ประกอบ HTML เฉพาะจากหน้าเว็บผ่าน Python API?

# Extract all anchor tags
links = soup.find_all('a')

for link in links:
    href = link.get('href')
    text = link.text.strip()
    print(f"Text: {text} | URL: {href}")

การจัดการการเข้ารหัสอัตโนมัติ

หนึ่งในคุณสมบัติที่สะดวกที่สุดของ Beautiful Soup คือการแปลงรหัสอัตโนมัติ ไลบรารีจะทำการแปลงเอกสารที่เข้ามาเป็น Unicode และเอกสารที่ส่งออกเป็น UTF-8 โดยอัตโนมัติ ซึ่งช่วยขจัดปัญหาที่พบบ่อยที่สุดในการดึงข้อมูลจากเว็บ โปรดจำไว้ว่า คุณต้องคิดเกี่ยวกับการเข้ารหัสเท่านั้นเมื่อเอกสารไม่ได้ระบุการเข้ารหัส เนื่องจาก Beautiful Soup ไม่สามารถตรวจจับการเข้ารหัสได้โดยอัตโนมัติ ในกรณีที่หายากเหล่านี้ คุณเพียงแค่ระบุการเข้ารหัสต้นฉบับด้วยตนเอง

 ไทย