پروژه‌های عملی در پایتون (بخش دوم)

ایجاد شده توسط دکتر مصطفی جلیلی در آموزش برنامه نویسی پایتون 27 مارس 2025
اشتراک گذاری

ساخت یک وب اسکرپر با BeautifulSoup در پایتون


وب اسکرپینگ (Web Scraping) یعنی استخراج اطلاعات از صفحات وب به صورت خودکار با استفاده از کد. یکی از پرکاربردترین کتابخانه‌ها برای این کار در پایتون، BeautifulSoup هست که در کنار requests استفاده می‌شه.


1. نصب کتابخانه‌ها


قبل از شروع، ابتدا باید کتابخانه‌های موردنیاز رو نصب کنیم:


pip install requests
pip install beautifulsoup4

2. وارد کردن کتابخانه‌ها


import requests
from bs4 import BeautifulSoup

3. ارسال درخواست به یک صفحه وب


فرض کن می‌خوای اطلاعات از یک صفحه ساده‌ی وب بگیریم. اول باید محتوای HTML اون صفحه رو دریافت کنیم:


url = "https://example.com"
response = requests.get(url)
# بررسی وضعیت پاسخ
if response.status_code == 200:
html_content = response.text
else:
print("خطا در دریافت صفحه:", response.status_code)

4. تجزیه (parse) کردن HTML


soup = BeautifulSoup(html_content, "html.parser")

حالا متغیر soup مثل یک درخت HTML عمل می‌کنه و می‌تونی باهاش عناصر صفحه رو پیدا کنی.


5. استخراج اطلاعات


5.1 پیدا کردن یک تگ خاص


title_tag = soup.find("title")
print("عنوان صفحه:", title_tag.text)

5.2 پیدا کردن همه‌ی تگ‌ها از یک نوع (مثلاً لینک‌ها)


all_links = soup.find_all("a")
for link in all_links:
href = link.get("href")
text = link.text.strip()
print("متن لینک:", text)
print("آدرس لینک:", href)

5.3 فیلتر کردن بر اساس کلاس یا ID


element = soup.find("div", class_="article-body")
print(element.text)

یا مثلاً:


header = soup.find("h1", id="main-title")
print(header.text)

6. نکات مهم امنیتی و اخلاقی




  • همیشه robots.txt سایت هدف رو بررسی کن. بعضی از سایت‌ها اجازه‌ی اسکرپینگ نمی‌دن.




  • تعداد درخواست‌ها رو کنترل کن (مثلاً با time.sleep(1) بین هر درخواست) تا سرور رو تحت فشار نذاری.




  • از headers مناسب استفاده کن:




headers = {
"User-Agent": "Mozilla/5.0 (compatible; MyScraper/1.0)"
}
response = requests.get(url, headers=headers)

7. ذخیره اطلاعات استخراج‌شده (اختیاری)


with open("data.txt", "w", encoding="utf-8") as f:
for link in all_links:
href = link.get("href")
text = link.text.strip()
f.write(f"{text} - {href}\n")

نظرات (0)

اشتراک گذاری

این پست را با دیگران به اشتراک بگذارید

تنظیمات GDPR

When you visit any of our websites, it may store or retrieve information on your browser, mostly in the form of cookies. This information might be about you, your preferences or your device and is mostly used to make the site work as you expect it to. The information does not usually directly identify you, but it can give you a more personalized web experience. Because we respect your right to privacy, you can choose not to allow some types of cookies. Click on the different category headings to find out more and manage your preferences. Please note, that blocking some types of cookies may impact your experience of the site and the services we are able to offer.