0

我正在尝试抓取此网址:

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'

请帮帮我谢谢

4

1 回答 1

0

您需要使用headers,主要是指定一个User-Agent告诉网站有关浏览器和设备的一般信息。如果您需要帮助找到一个,GitHub 上有一个庞大的用户代理列表

您可以像这样指定headers一个特定的request

yield Request(parse=..., headers={"User-Agent":"user_agent", "Referrer":"url_here", etc.})
于 2019-06-05T00:32:19.883 回答