Intégrez le scrapy avec API SctringBee pour utiliser des navigateurs sans tête pour la rotation JavaScript et proxy. Nécessite de créer un compte sur SctringBee.com pour obtenir une clé API.
pip install scrapy-scrapingbee
Ajoutez votre SCRAPINGBEE_API_KEY et le ScrapingBeeMiddleware à votre projet Settings.py. N'oubliez pas de définir CONCURRENT_REQUESTS en fonction de votre plan SctringBee.
SCRAPINGBEE_API_KEY = 'REPLACE-WITH-YOUR-API-KEY'
DOWNLOADER_MIDDLEWARES = {
'scrapy_scrapingbee.ScrapingBeeMiddleware' : 725 ,
}
CONCURRENT_REQUESTS = 1 Héritez de vos araignées de ScrapingBeeSpider et donnez une ScrapingBeeRequest .
SctringBeospider remplace le journal par défaut pour masquer votre clé API dans les journaux de scrapie.
Vous trouverez ci-dessous un exemple de The Spider dans 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 ):
...Vous pouvez passer des paramètres de gratte-basse dans l'argument des params d'un gratte-bbeerequest. Les en-têtes et les cookies sont passés comme une demande de scroty normale. Stracingbeerequest Formats tous les paramètres, en-têtes et cookies au format attendu par l'API SctringBee.
Ajoutez votre touche API à Settings.py.
Pour exécuter les exemples, vous avez besoin pour cloner ce référentiel. Dans votre terminal, allez à examples/httpbin/httpbin et exécutez l'exemple d'araignée avec:
scrapy crawl httpbin