کتابخانه 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 Selector | XPath |
|---|---|---|
| سادگی | ساده و کوتاه | کمی پیچیدهتر |
| انعطاف | محدود به ساختار CSS | قابل استفاده برای ساختارهای پیچیده HTML |
| پشتیبانی | Scrapy و سایر ابزارها | Scrapy و اکثر زبانها |
نتیجهگیری
Scrapy یک ابزار قدرتمند برای جمعآوری داده از وبسایتها است. با رعایت بهترین شیوهها، استفاده از Selectorها، مدیریت Pipeline و اجرای Spiderها میتوان پروژههای وب اسکرپینگ حرفهای و قابل توسعه ایجاد کرد.
آیا این مطلب برای شما مفید بود ؟




