Интегрируйте скрапу с API ScrapingBee, чтобы использовать безголовые браузеры для javaScript и прокси -вращения. Требуется создать учетную запись на scrapingbee.com, чтобы получить ключ API.
pip install scrapy-scrapingbee
Добавьте свой SCRAPINGBEE_API_KEY и ScrapingBeeMiddleware в ваш проект settings.py. Не забудьте установить CONCURRENT_REQUESTS в соответствии с вашим планом ScrapingBee.
SCRAPINGBEE_API_KEY = 'REPLACE-WITH-YOUR-API-KEY'
DOWNLOADER_MIDDLEWARES = {
'scrapy_scrapingbee.ScrapingBeeMiddleware' : 725 ,
}
CONCURRENT_REQUESTS = 1 Уточните своих пауков от ScrapingBeeSpider и дайте ScrapingBeeRequest .
ScrapingBeespider переопределяет журнал по умолчанию, чтобы скрыть ключ API в журналах Scrapy.
Ниже вы можете увидеть пример от Spider в 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 ):
...Вы можете передать параметры ScrapingBee в аргументе Params ScrapingBeereQuest. Заголовки и файлы cookie передаются как обычный запрос на скрара. ScrapingBeereQuest Форматы все параметры, заголовки и файлы cookie для формата, ожидаемого API ScrapingBee.
Добавьте свой клавиш API в настройки.py.
Чтобы запустить примеры, вам нужно клонировать этот репозиторий. В вашем терминале перейдите к examples/httpbin/httpbin и запустите пример паука с помощью:
scrapy crawl httpbin