Integre Scrapy con la API de rasguño para usar navegadores sin cabeza para JavaScript y rotación proxy. Requiere crear una cuenta en scrapingbee.com para obtener una clave API.
pip install scrapy-scrapingbee
Agregue su SCRAPINGBEE_API_KEY y el ScrapingBeeMiddleware a su proyecto settings.py. No olvide establecer CONCURRENT_REQUESTS de acuerdo con su plan de raspingbee.
SCRAPINGBEE_API_KEY = 'REPLACE-WITH-YOUR-API-KEY'
DOWNLOADER_MIDDLEWARES = {
'scrapy_scrapingbee.ScrapingBeeMiddleware' : 725 ,
}
CONCURRENT_REQUESTS = 1 Heredar a sus arañas de ScrapingBeeSpider y producir un ScrapingBeeRequest .
SrapingBeSpider anula el registrador predeterminado para ocultar su tecla API en los registros de Scrapy.
A continuación puede ver un ejemplo de la araña en 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 ):
...Puede pasar los parámetros de rasguño en el argumento de parámetros de un scrapingbeequest. Los encabezados y las cookies se pasan como una solicitud de franquear normal. SCROPINGBEEREQUEST FORMATOS Todos los parámetros, encabezados y cookies al formato esperado por la API de rasguño.
Agregue su clave API a Settings.py.
Para ejecutar los ejemplos que necesita para clonar este repositorio. En su terminal, vaya a examples/httpbin/httpbin y ejecute la araña de ejemplo con:
scrapy crawl httpbin