ویژگی تصویر

کتابخانه scrapy در پایتون

  /  پایتون   /  کتابخانه scrapy در پایتون
بنر تبلیغاتی الف

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

ویژگی‌های کلیدی Scrapy

  • سرعت بالا و کارایی مناسب برای پردازش صفحات متعدد
  • پشتیبانی از مدیریت کوکی‌ها و نشست‌ها
  • امکان استخراج داده‌ها به صورت CSS Selector و XPath
  • مدیریت پروکسی‌ها و هدرهای HTTP برای جلوگیری از بلاک شدن
  • سازگاری با پروژه‌های بزرگ و قابلیت توسعه آسان

مفاهیم پایه‌ای Scrapy

1. Spider

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

2. Selector

برای استخراج داده‌ها، Scrapy از CSS Selector و XPath استفاده می‌کند. این ابزارها به ما اجازه می‌دهند عناصر HTML موردنظر را به سادگی پیدا کنیم.

3. Item

یک Item در Scrapy ساختاری مشابه دیکشنری پایتون دارد و برای ذخیره داده‌های استخراج شده استفاده می‌شود.

4. Pipeline

Pipeline مکانیزمی است برای پردازش داده‌ها بعد از استخراج، مثل پاکسازی، اعتبارسنجی یا ذخیره‌سازی در پایگاه داده.

نصب و راه‌اندازی Scrapy

pip install scrapy

با اجرای دستور بالا، کتابخانه Scrapy روی محیط پایتون شما نصب می‌شود. بعد از نصب، می‌توان پروژه جدید Scrapy را با دستور زیر ایجاد کرد:

scrapy startproject myproject

در این دستور، myproject نام پروژه است و ساختار پایه‌ای شامل پوشه‌های spiders، items.py و pipelines.py ایجاد می‌شود.

ساخت یک Spider ساده

import scrapy

class QuotesSpider(scrapy.Spider):
name = "quotes"
start_urls = [
'[http://quotes.toscrape.com/](http://quotes.toscrape.com/)'
]

```
def parse(self, response):
    for quote in response.css('div.quote'):
        yield {
            'text': quote.css('span.text::text').get(),
            'author': quote.css('small.author::text').get(),
        }
```

در این مثال:

  • کلاس QuotesSpider از scrapy.Spider ارث‌بری کرده است.
  • ویژگی start_urls لیستی از URL‌ها برای شروع جمع‌آوری داده‌ها است.
  • متد parse برای پردازش پاسخ HTTP و استخراج داده‌ها استفاده می‌شود.

اجرای Spider

scrapy crawl quotes -o quotes.json

این دستور Spider با نام quotes را اجرا کرده و داده‌ها را در فایل quotes.json ذخیره می‌کند.

بهترین شیوه‌ها در استفاده از Scrapy

  • استفاده از Downloader Middlewares برای مدیریت هدرها و پروکسی‌ها.
  • تنظیم DOWNLOAD_DELAY برای جلوگیری از بلاک شدن توسط سایت‌ها.
  • استفاده از Item Pipeline برای اعتبارسنجی و پاکسازی داده‌ها قبل از ذخیره.
  • تقسیم Spider‌ها برای مدیریت بهتر و جلوگیری از پیچیدگی در پروژه‌های بزرگ.
  • ثبت لاگ‌ها با logging برای اشکال‌زدایی و تحلیل رفتار Spider.

مثال پیشرفته: استفاده از XPath

def parse(self, response):
    for quote in response.xpath('//div[@class="quote"]'):
        yield {
            'text': quote.xpath('span[@class="text"]/text()').get(),
            'author': quote.xpath('small[@class="author"]/text()').get(),
        }

در این مثال، به جای CSS Selector از XPath استفاده شده است. XPath انعطاف بیشتری در انتخاب عناصر پیچیده دارد.

مقایسه CSS Selector و XPath

ویژگیCSS SelectorXPath
سادگیساده و کوتاهکمی پیچیده‌تر
انعطافمحدود به ساختار CSSقابل استفاده برای ساختارهای پیچیده HTML
پشتیبانیScrapy و سایر ابزارهاScrapy و اکثر زبان‌ها

نتیجه‌گیری

Scrapy یک ابزار قدرتمند برای جمع‌آوری داده از وب‌سایت‌ها است. با رعایت بهترین شیوه‌ها، استفاده از Selectorها، مدیریت Pipeline و اجرای Spiderها می‌توان پروژه‌های وب اسکرپینگ حرفه‌ای و قابل توسعه ایجاد کرد.

آیا این مطلب برای شما مفید بود ؟

خیر
بله
موضوعات شما در انجمن: