کتابخانه منبع باز پایتون برای تجزیه HTML/XML و استخراج دادهها
Beautiful Soup یک کتابخانه پیشرو منبع باز پایتون برای تجزیه است که HTML/XML نامنظم را تجزیه میکند، متن/لینکها را استخراج میکند، درخت را پیمایش میکند و جریانهای کاری مدرن استخراج وب را تقویت میکند.
Beautiful Soup چیست؟
وباسکرپینگ به مهارتی اساسی برای دانشمندان داده، توسعهدهندگان و پژوهشگرانی که نیاز به استخراج اطلاعات ارزشمند از وبسایتها دارند تبدیل شده است. Beautiful Soup به عنوان یکی از محبوبترین و کاربرپسندترین کتابخانههای پایتون برای تجزیه اسناد HTML و XML شناخته میشود. از زمان ایجاد آن در سال ۲۰۰۴، این ابزار قدرتمند ساعتهای بیشماری را برای برنامهنویسان در پروژههای وباسکرپینگ صرفهجویی کرده است. API شهودی کتابخانه، مستندات عالی و پشتیبانی فعال جامعه، اطمینان میدهد که هم مبتدیان و هم توسعهدهندگان باتجربه میتوانند دادههای وب را بهصورت کارآمد استخراج کنند.
Beautiful Soup یک کتابخانه پایتون است که بهطور خاص برای استخراج دادهها از فایلهای HTML و XML طراحی شده است. این یک کتابخانه قدرتمند پایتون است که از سال ۲۰۰۴ به برنامهنویسان ساعتها یا روزهای کار در پروژههای وباسکرپینگ را صرفهجویی میکند. تنها با چند خط کد، میتوانید پرسوجوهای پیچیدهای مانند سادگی و سهولت استفاده، یافتن تمام لینکها، استخراج محتوای متنی، تبدیل خودکار رمزگذاری، انعطافپذیری پارسر، مدیریت خطای قوی، جستجو و استخراج لینکها از صفحات وب و موارد دیگر را انجام دهید.
کتابخانه Beautiful Soup کار دشوار استخراج دادهها از اسناد HTML و XML را به یک فرآیند پایتونیک ساده تبدیل میکند، محتوای وب با ساختار ضعیف را به درختهای تجزیهگر منظم تبدیل میسازد که میتوانید با روشهای ساده به آنها پیمایش و جستجو کنید. کاری که بهطور سنتی ساعتها زمان میبرد با کدنویسی دستی، میتواند در چند دقیقه با Beautiful Soup انجام شود. این کتابخانه همچنان استاندارد صنعتی برای توسعهدهندگان پایتون است که وارد دنیای وباسکرپینگ میشوند. سادگی آن، همراه با قدرت پارسرهای مختلف، آن را به گزینهای بیرقیب برای استخراج دادهها از وبسایتهای ایستا تبدیل میکند.
شروع کار با Beautiful Soup
روش پیشنهادی و آسان برای نصب Beautiful Soup استفاده از pip است. لطفاً برای نصب روان از فرمان زیر استفاده کنید.
نصب کتابخانه Beautiful Soup از طریق pip
pip install beautifulsoup4 همچنین میتوانید بهصورت دستی نصب کنید؛ فایلهای آخرین نسخه را مستقیماً از صفحه وب سوپ زیبا دانلود کنید.
کار با چند تجزیهکننده
کتابخانه Beautiful Soup تمام پردازش را خود انجام نمیدهد — بلکه بر روی تجزیهکنندههای پیشرفتهای مانند html.parser داخلی پایتون، تجزیهکننده سریع lxml و html5lib شبیه مرورگر قرار میگیرد. بسته به نیازها میتوانید سرعت یا سازگاری با استانداردها را اولویت دهید. این معماری به شما انعطافپذیری میدهد تا تجزیهکنندهای که بهترین تطابق را با نیازهای شما دارد انتخاب کنید، سرعت تجزیه را برای انعطافپذیری تعویض کنید، استراتژیهای مختلف تجزیه را بدون تغییر کد Beautiful Soup امتحان کنید، و غیره. کد ساده زیر نشان میدهد که توسعهدهندگان چگونه میتوانند از تجزیهکنندههای مختلف با Beautiful Soup استفاده کنند.
چگونه از چندین تجزیهکننده برای تجزیه اسناد HTML در برنامههای پایتون استفاده کنیم؟
# 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 پشتیبانی از بارگذاری صفحات وب و استخراج لینکها را در برنامههای پایتون فراهم کرده است. مثال ساده کد زیر نشان میدهد که چگونه یک صفحه وب زنده را با استفاده از کتابخانه requests دریافت کرده و سپس تمام تگهای anchor را در برنامههای پایتون استخراج میکنیم.
چگونه لینکها را از صفحات وب با استفاده از پایتون استخراج کنیم؟
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 و متن را استخراج میکنیم تا نام قابل مشاهده لینک را با استفاده از API پایتون به دست آوریم.
چگونه عنصر خاص HTML را از صفحه وب جستجو و استخراج کنیم با استفاده از 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 تبدیل خودکار رمزگذاری است. این کتابخانه بهصورت خودکار اسناد ورودی را به یونیکد و اسناد خروجی را به UTF-8 تبدیل میکند و یکی از رایجترین دردسرهای استخراج وب را از بین میبرد. لطفاً به یاد داشته باشید که فقط زمانی باید به رمزگذاریها فکر کنید که سند رمزگذاری مشخصی نداشته باشد، زیرا Beautiful Soup نمیتواند بهصورت خودکار رمزگذاری را تشخیص دهد. در این موارد نادر، کافی است رمزگذاری اصلی را بهصورت دستی مشخص کنید.