رفتن به مطلب
  • زمان مطالعه : 7 دقیقه

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

وب‌اسکرپینگ چیه؟

وب‌اسکرپینگ به فرآیند خودکار جمع‌آوری داده‌ها از صفحات وب گفته می‌شه. به جای اینکه دستی برید و اطلاعات رو کپی کنید، یه برنامه می‌نویسید که این کار رو براتون انجام بده. پایتون به خاطر سادگی، کتابخانه‌های قدرتمند و انعطاف‌پذیریش، یکی از بهترین زبان‌ها برای وب‌اسکرپینگه.

چرا پایتون؟

  • کتابخانه‌های آماده: ابزارهایی مثل Beautiful Soup، Requests و Scrapy کار رو خیلی راحت می‌کنن.

  • خوانایی کد: حتی اگه تازه‌کار باشید، می‌تونید با چند خط کد شروع کنید.

  • جامعه بزرگ: هر سوالی داشته باشید، جوابش توی انجمن‌های پایتون پیدا می‌شه.

ابزارهای اصلی وب‌اسکرپینگ با پایتون

بیاید با چند ابزار کلیدی که توی این مسیر نیاز دارید آشنا بشیم:

  1. Requests: برای ارسال درخواست HTTP و دریافت محتوای صفحه وب.

  2. Beautiful Soup: برای تجزیه (parse) کردن HTML و پیدا کردن داده‌های مورد نظر.

  3. Scrapy: یه فریم‌ورک کامل برای پروژه‌های بزرگ‌تر و پیچیده‌تر (اختیاری).

یه مثال ساده: استخراج عنوان صفحه

بیاید با یه مثال عملی شروع کنیم. فرض کنید می‌خواهیم عنوان یه صفحه وب رو بگیریم:

import requests
from bs4 import BeautifulSoup

# آدرس صفحه‌ای که می‌خواهیم اسکرپ کنیم
url = "https://example.com"

# درخواست به صفحه
response = requests.get(url)

# چک کردن اینکه درخواست موفق بوده
if response.status_code == 200:
    # تجزیه HTML
    soup = BeautifulSoup(response.text, "html.parser")
    # پیدا کردن تگ عنوان
    title = soup.find("title").text
    print(f"عنوان صفحه: {title}")
else:
    print("خطا در اتصال به صفحه")

خروجی چیزی شبیه اینه:

عنوان صفحه: Example Domain

اینجا با requests محتوای صفحه رو گرفتیم و با BeautifulSoup تگ <title> رو پیدا کردیم. ساده بود، نه؟

مراحل وب‌اسکرپینگ

برای یه پروژه وب‌اسکرپینگ موفق، این مراحل رو دنبال کنید:

  1. شناسایی هدف: اول مشخص کنید چه داده‌ای می‌خواهید (مثلاً قیمت‌ها، نظرات کاربران، یا لینک‌ها).

  2. بررسی ساختار صفحه: ابزار توسعه‌دهنده مرورگر (Inspector) رو باز کنید و HTML صفحه رو نگاه کنید تا بفهمید داده‌ها کجا هستن.

  3. نوشتن کد: با پایتون درخواست بفرستید و داده‌ها رو استخراج کنید.

  4. ذخیره داده‌ها: اطلاعات رو توی فایل CSV، JSON یا دیتابیس ذخیره کنید.

  5. اتوماسیون (اختیاری): اگه نیازه، کدتون رو طوری تنظیم کنید کi (مثلاً روزانه) اجرا بشه.

یه پروژه واقعی: استخراج قیمت محصولات

فرض کنید می‌خواهید قیمت یه محصول رو از یه سایت فروشگاهی بکشید بیرون:

import requests
from bs4 import BeautifulSoup

url = "https://fake-shop.com/product/sample"  # آدرس فرضی
response = requests.get(url)

if response.status_code == 200:
    soup = BeautifulSoup(response.text, "html.parser")
    price = soup.find("span", class_="price").text  # فرض بر اینکه قیمت توی این تگ هست
    print(f"قیمت محصول: {price}")
else:
    print("اتصال ناموفق")

توی این کد، ما دنبال تگ <span> با کلاس price گشتیم. اگه سایت واقعی باشه، باید کلاس یا تگ دقیق رو از HTMLش پیدا کنید.

نکات مهم و چالش‌ها

وب‌اسکرپینگ به همین سادگیا هم نیست! یه سری نکته و چالش هست که باید حواستون باشه:

  • قوانین سایت: قبل از اسکرپ کردن، فایل robots.txt سایت رو چک کنید و مطمئن شید که اجازه این کار رو دارید. بعضی سایت‌ها اسکرپینگ رو ممنوع کردن.

  • بلاک شدن: اگه درخواست‌های زیادی بفرستید، ممکنه IPتون بلاک بشه. برای این کار می‌تونید از تأخیر (delay) بین درخواست‌ها یا پراکسی استفاده کنید.

  • تغییر ساختار سایت: اگه سایت HTMLش رو عوض کنه، کدهاتون ممکنه خراب بشه. باید آماده به‌روزرسانی باشید.

  • داده‌های پویا: بعضی سایت‌ها با جاوا اسکریپت لود می‌شن. توی این موارد، ابزارهایی مثل Selenium یا Playwright که مرورگر رو شبیه‌سازی می‌کنن، به کارتون میاد.

ذخیره داده‌ها توی فایل

بعد از استخراج، می‌تونید داده‌ها رو توی یه فایل CSV ذخیره کنید:

import csv

data = {"title": "محصول نمونه", "price": "100,000 تومان"}
with open("products.csv", "w", newline="", encoding="utf-8") as file:
    writer = csv.DictWriter(file, fieldnames=["title", "price"])
    writer.writeheader()
    writer.writerow(data)

حالا داده‌هاتون توی یه فایل مرتب ذخیره شدن!

چرا وب‌اسکرپینگ یاد بگیریم؟

  • تحلیل بازار: قیمت‌ها و محصولات رقبا رو مقایسه کنید.

  • تحقیقات: داده‌های علمی یا خبری رو جمع‌آوری کنید.

  • اتوماسیون: کارای تکراری مثل چک کردن موجودی انبار رو خودکار کنید.

جمع‌بندی

وب‌اسکرپینگ با پایتون یه مهارت قدرتمنده که با چند خط کد ساده شروع می‌شه، اما می‌تونه به پروژه‌های پیچیده و حرفه‌ای تبدیل بشه. ابزارهایی مثل Requests و Beautiful Soup نقطه شروع عالی‌ای هستن و اگه بخواهید حرفه‌ای‌تر بشید، می‌تونید سراغ Scrapy یا Selenium برید. فقط یادتون باشه با مسئولیت‌پذیری و رعایت قوانین پیش برید.

بازخورد کاربر

دیدگاه‌های پیشنهاد شده

هیچ دیدگاهی برای نمایش وجود دارد.

دیدگاه خود را ارسال کنید

از استفاده از کلمات رکیک و خلاف قوانین و غیر مرتبط با موضوع خودداری کنید ...
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

مهمان
افزودن دیدگاه...