دمج Scrapy مع DragingBee API لاستخدام متصفحات مقطوعة الرأس ل JavaScript ودورات الوكيل. يتطلب إنشاء حساب على موقع DragingBee.com للحصول على مفتاح API.
pip install scrapy-scrapingbee
أضف SCRAPINGBEE_API_KEY و ScrapingBeeMiddleware إلى إعدادات مشروعك. لا تنسى وضع CONCURRENT_REQUESTS وفقًا لخطة DrgtingBee.
SCRAPINGBEE_API_KEY = 'REPLACE-WITH-YOUR-API-KEY'
DOWNLOADER_MIDDLEWARES = {
'scrapy_scrapingbee.ScrapingBeeMiddleware' : 725 ,
}
CONCURRENT_REQUESTS = 1 يرث العناكب الخاصة بك من ScrapingBeeSpider ويعطي ScrapingBeeRequest .
يقوم DragingBeespider بتجاوز المسجل الافتراضي لإخفاء مفتاح API الخاص بك في سجلات Scrapy.
أدناه يمكنك رؤية مثال من العنكبوت في httpbin.py.
from scrapy_scrapingbee import ScrapingBeeSpider , ScrapingBeeRequest
JS_SNIPPET = 'window.scrollTo(0, document.body.scrollHeight);'
class HttpbinSpider ( ScrapingBeeSpider ):
name = 'httpbin'
start_urls = [
'https://httpbin.org' ,
]
def start_requests ( self ):
for url in self . start_urls :
yield ScrapingBeeRequest ( url , params = {
# 'render_js': False,
# 'block_ads': True,
# 'block_resources': False,
# 'js_snippet': JS_SNIPPET,
# 'premium_proxy': True,
# 'country_code': 'fr',
# 'return_page_source': True,
# 'wait': 3000,
# 'wait_for': '#swagger-ui',
},
headers = {
# 'Accept-Language': 'En-US',
},
cookies = {
# 'name_1': 'value_1',
})
def parse ( self , response ):
...يمكنك تمرير معلمات DragingBee في وسيطة params من dragingbeerequest. يتم تمرير الرؤوس وملفات تعريف الارتباط مثل طلب SHICPLASE العادي. يقوم DragingBeerequest بتنسيق جميع المعلمات والرؤوس وملفات تعريف الارتباط للتنسيق المتوقع بواسطة API DragingBee.
أضف مفتاح API إلى الإعدادات.
لتشغيل الأمثلة التي تحتاجها لاستنساخ هذا المستودع. في المحطة الخاصة بك ، انتقل إلى examples/httpbin/httpbin وقم بتشغيل العنكبوت على سبيل المثال:
scrapy crawl httpbin