Как заставить сайт поверить, что запрос поступает из браузера, использующего Scrapy? - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь очистить этот URL:

https://www.bloomberg.com/news/articles/2019-06-03/a-tesla-collapse-would-boost-european-carmakers-bernstein-says

Я просто хотел очистить только заголовок и дату публикации, но Bloomberg всегда забанил человека и подумал, что я робот

Пример ответа, которыйЯ получил:

<!doctype html>
<html>
<head>
<title>Bloomberg - Are you a robot?</title>
<meta name="viewport" content="width=device-width, initial-scale=1">

Есть идеи, как заставить веб-сайт считать, что запрос поступает из браузера, использующего Scrapy?

Это то, что я сделал до сих пор

  def parse(self, response):
        yield scrapy.Request('https://www.bloomberg.com/news/articles/2019-05-30/tesla-dealt-another-blow-as-barclays-sees-it-as-niche-carmaker',
        headers={'X-Crawlera-Session': 'create',
                'Referrer': "https://www.bloomberg.com/news/articles/2019-05-30/tesla-dealt-another-blow-as-barclays-sees-it-as-niche-carmaker",
                'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
                'accept-language': 'en-US,en;q=0.9,fr;q=0.8,ro;q=0.7,ru;q=0.6,la;q=0.5,pt;q=0.4,de;q=0.3',
                'cache-control': 'max-age=0',
                'upgrade-insecure-requests': '1',
                'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
        },

 def parse_sub(self, response):
     print(response.text)

Я также использую crawlera, и я добавил его в settings.py

 DOWNLOADER_MIDDLEWARES = {'scrapy_crawlera.CrawleraMiddleware': 300}
 CONCURRENT_REQUESTS = 32
 CONCURRENT_REQUESTS_PER_DOMAIN = 32
 AUTOTHROTTLE_ENABLED = False
 DOWNLOAD_TIMEOUT = 600
 CRAWLERA_APIKEY = 'API_KEY'

Пожалуйста, помогите мне спасибо

1 Ответ

0 голосов
/ 05 июня 2019

Вам необходимо использовать headers, в основном, чтобы указать User-Agent, который сообщает веб-сайту общую информацию о браузере и устройстве.На GitHub есть огромный список пользовательских агентов , если вам нужна помощь в его поиске.

Вы можете указать headers для определенного request, например:

yield Request(parse=..., headers={"User-Agent":"user_agent", "Referrer":"url_here", etc.})
...