وباسکرپینگ (Web Scraping) فرآیندی است که در آن اطلاعات از صفحات وب به صورت خودکار استخراج میشود. این تکنیک در بسیاری از موارد کاربرد دارد، مانند جمعآوری دادههای قیمت از فروشگاههای آنلاین، تحلیل دادههای خبری، یا حتی بررسی رقبا. پایتون به دلیل داشتن کتابخانههای قدرتمند و سادگی در کدنویسی، یکی از بهترین زبانها برای انجام وباسکرپینگ است. در این مقاله در سایت کلاسیتو، به صورت گامبهگام یاد میگیریم که چگونه با استفاده از پایتون و کتابخانه BeautifulSoup
یک وباسکرپر ساده بسازیم.
پیشنیازها
قبل از شروع، باید اطمینان حاصل کنید که موارد زیر روی سیستم شما نصب شده باشد:
- پایتون (نسخه 3 یا بالاتر)
- کتابخانههای
BeautifulSoup
وrequests
- یک ویرایشگر متن یا محیط برنامهنویسی، مانند VS Code یا PyCharm
اگر کتابخانههای مورد نیاز را نصب نکردهاید، میتوانید با استفاده از دستور زیر آنها را نصب کنید:
pip install beautifulsoup4 requests
گام اول: وارد کردن کتابخانهها
ابتدا باید کتابخانههای مورد نیاز را وارد کنیم. یک فایل جدید با پسوند .py
ایجاد کنید و کد زیر را در آن بنویسید:
import requests
from bs4 import BeautifulSoup
کتابخانه requests
برای ارسال درخواست به وبسایت و دریافت محتوای آن استفاده میشود، و BeautifulSoup
برای تحلیل و استخراج دادهها به کار میرود.
گام دوم: ارسال درخواست به وبسایت
در این مرحله، باید به وبسایتی که میخواهیم اطلاعات آن را استخراج کنیم، درخواست ارسال کنیم. به عنوان مثال، فرض کنید میخواهیم عنوان مقالات یک وبلاگ را دریافت کنیم:
url = "https://example.com"
response = requests.get(url)
if response.status_code == 200:
print("درخواست موفقیتآمیز بود!")
else:
print("خطایی رخ داده است.")
در این کد، URL وبسایت را مشخص کردهایم و سپس با استفاده از requests.get
یک درخواست ارسال کردهایم. اگر کد وضعیت (status code) برابر با 200 باشد، یعنی درخواست موفقیتآمیز بوده است.
گام سوم: تحلیل HTML صفحه
پس از دریافت محتوای صفحه، باید آن را با استفاده از BeautifulSoup
تحلیل کنیم:
soup = BeautifulSoup(response.content, "html.parser")
print(soup.prettify())
کد بالا محتوای HTML صفحه را به صورت ساختاریافته نمایش میدهد. این کار به ما کمک میکند تا عناصر مورد نظر خود را در صفحه پیدا کنیم.
گام چهارم: استخراج دادهها
فرض کنید میخواهیم عنوانهای موجود در تگهای h2
را استخراج کنیم. میتوانیم از کد زیر استفاده کنیم:
titles = soup.find_all("h2")
for title in titles:
print(title.text)
در این کد، از تابع find_all
برای یافتن تمام تگهای h2
استفاده کردهایم و متن داخل هر تگ را چاپ کردهایم.
گام پنجم: ذخیره دادهها
برای ذخیره دادهها در یک فایل، میتوانیم از کد زیر استفاده کنیم:
with open("titles.txt", "w", encoding="utf-8") as file:
for title in titles:
file.write(title.text + "\n")
این کد تمام عنوانها را در یک فایل متنی ذخیره میکند.
نکات ایمنی
هنگام انجام وباسکرپینگ، باید به قوانین و ضوابط وبسایتها احترام بگذارید. بسیاری از وبسایتها در فایل robots.txt
مشخص میکنند که چه بخشهایی از سایت قابل اسکرپ کردن هستند. همچنین، از ارسال درخواستهای زیاد و پشت سر هم خودداری کنید، زیرا ممکن است IP شما مسدود شود.
نتیجهگیری
ساخت یک وباسکرپر ساده با پایتون به شما امکان میدهد تا اطلاعات مورد نیاز خود را به صورت خودکار از وبسایتها استخراج کنید. با استفاده از کتابخانههای BeautifulSoup
و requests
، شما میتوانید دادههای ارزشمند را به سرعت و به آسانی جمعآوری کنید. در این مقاله، اصول اولیه وباسکرپینگ را یاد گرفتید. برای پروژههای پیچیدهتر، میتوانید از ابزارهایی مانند Scrapy
استفاده کنید. چنانچه به دیگر مباحث در زمینه پاپتون علاقه داشته باشید میتوانید از بخش آموزش پایتون سایت کلاسیتو بازدید کنید و از ویدیوهای آموزشی با زیرنویس فارسی استفاده کنید.