Integre a Scrapy com a API ScrapingBee para usar navegadores sem cabeça para JavaScript e rotação de proxy. Requer criar uma conta no scrapingbee.com para obter uma chave de API.
pip install scrapy-scrapingbee
Adicione o seu SCRAPINGBEE_API_KEY e o ScrapingBeeMiddleware ao seu projeto Settings.py. Não se esqueça de definir CONCURRENT_REQUESTS de acordo com o seu plano ScrapingBee.
SCRAPINGBEE_API_KEY = 'REPLACE-WITH-YOUR-API-KEY'
DOWNLOADER_MIDDLEWARES = {
'scrapy_scrapingbee.ScrapingBeeMiddleware' : 725 ,
}
CONCURRENT_REQUESTS = 1 Herde suas aranhas de ScrapingBeeSpider , e produza um ScrapingBeeRequest .
A sucata, substituindo o logger padrão para ocultar sua tecla API nos logs de scrapy.
Abaixo, você pode ver um exemplo da aranha em 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 ):
...Você pode passar os parâmetros de ScrapingBee no argumento dos parâmetros de uma sucata. Cabeçalhos e cookies são passados como uma solicitação de navegação normal. Scrapingbeeerequest formato Todos os parâmetros, cabeçalhos e cookies para o formato esperado pela API ScrapingBee.
Adicione sua tecla API para Settings.py.
Para executar os exemplos, você precisa clonar este repositório. No seu terminal, vá para examples/httpbin/httpbin e execute o exemplo de aranha com:
scrapy crawl httpbin