معرفی و آموزش کامل BeautifulSoup برای مبتدیان
اگر تازه با دنیای وب اسکریپینگ آشنا شدهاید و به دنبال ابزاری ساده، قابلفهم و قدرتمند برای شروع هستید، BeautifulSoup یکی از بهترین گزینهها برای شماست. این کتابخانهی پایتون به شما اجازه میدهد بهراحتی محتوای صفحات HTML و XML را بخوانید، دادههای مورد نظرتان را پیدا کنید و استخراج نمایید.
در این مقاله قصد داریم یک آموزش کامل BeautifulSoup برای مبتدیان ارائه دهیم. از نصب تا نوشتن کدهای سادهی استخراج داده با مثالهای عملی، هر مرحله را با هم بررسی میکنیم.

بخش اول: نصب و آمادهسازی محیط کار
برای شروع کار با BeautifulSoup، ابتدا باید محیط پایتونی را آماده کنیم و کتابخانههای مورد نیاز را نصب کنیم.
نصب کتابخانهها:
pip install beautifulsoup4
pip install requests
کتابخانه beautifulsoup4
برای تجزیهی HTML استفاده میشود، و requests
برای ارسال درخواست HTTP و دریافت صفحه وب.
یک مثال اولیه:
import requests
from bs4 import BeautifulSoup
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
print(soup.title)
در این مثال، ما صفحهی “example.com” را دریافت کردیم و عنوان صفحه را چاپ کردیم.
بخش دوم: ساختار کلی BeautifulSoup
برای اینکه بتوانید از آموزش BeautifulSoup بیشترین بهره را ببرید، باید درک درستی از ساختار درختی HTML و DOM داشته باشید. BeautifulSoup، صفحه HTML را به یک درخت تبدیل میکند که میتوان گرهها (تگها) را به راحتی پیمایش کرد.
جستجوی ساده تگها:
print(soup.h1) # اولین تگ <h1>
print(soup.p) # اولین پاراگراف
print(soup.find('div')) # اولین <div>
جستجوی پیشرفتهتر با کلاس یا شناسه:
soup.find('div', class_='product-card')
soup.find('span', id='price')
find
فقط اولین مورد را برمیگرداند. برای دریافت همهی موارد مشابه از find_all
استفاده میکنیم.
دریافت متن تگ:
title = soup.find('h1').text
print(title)
این دستورات از پایهترین مهارتهای لازم در آموزش BeautifulSoup هستند.
بخش سوم: استخراج لیستها و اطلاعات تکرارشونده
یکی از کاربردهای رایج در وب اسکریپینگ، استخراج دادههایی است که بهصورت لیستی در صفحه تکرار میشوند؛ مثل لیست محصولات، مقالات، قیمتها و غیره.
فرض کنید ساختار HTML سایت به این شکل باشد:
<ul>
<li class="item">کتاب اول</li>
<li class="item">کتاب دوم</li>
<li class="item">کتاب سوم</li>
</ul>
برای استخراج همهی موارد:
items = soup.find_all('li', class_='item')
for item in items:
print(item.text)
همین ساختار ساده، میتواند پایهی جمعآوری اطلاعات از سایتهایی مثل دیجیکالا، دیوار یا فروشگاههای آنلاین دیگر باشد. این مرحله از آموزش BeautifulSoup اهمیت زیادی دارد، چون الگوی اصلی استخراج داده را شکل میدهد.
بخش چهارم: نکات تکمیلی و مدیریت خطاها
برای اینکه کد شما حرفهایتر شود، بهتر است چند نکته را رعایت کنید:
۱. بررسی وضعیت پاسخ سرور:
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
else:
print("خطا در دریافت صفحه")
۲. بررسی وجود تگ قبل از استخراج متن:
title_tag = soup.find('h1')
if title_tag:
print(title_tag.text)
۳. انتخاب parser مناسب:
html.parser
سادهترین گزینه است ولی برای سایتهایی با ساختار پیچیدهتر میتوانید از lxml
یا html5lib
استفاده کنید:
pip install lxml
و در کد:
soup = BeautifulSoup(response.text, 'lxml')
استفاده از parser مناسب یکی از نکات مهم در آموزش BeautifulSoup است که مستقیماً روی دقت استخراج تأثیر میگذارد.
جمعبندی
در این مقاله تلاش کردیم یک آموزش BeautifulSoup ساده و عملی برای علاقهمندان تازهوارد به دنیای وب اسکریپینگ ارائه دهیم. از نصب اولیه تا استخراج دادههای ساده، همه چیز را گامبهگام با هم بررسی کردیم.
در ادامه، مقالاتی در مورد Scrapy، Selenium و کار با صفحات داینامیک خواهیم داشت که مهارتهای شما را در این زمینه کاملتر خواهد کرد.
اگر در استفاده از BeautifulSoup به مشکلی خوردید یا سوالی داشتید، حتماً در بخش نظرات بپرسید. همینطور اگر ایدهی خاصی برای پروژه با BeautifulSoup دارید، خوشحال میشویم بشنویم.👇