使用可识别的用户代理
如果您违反服务条款并被网站所有者标记会发生什么? 您如何帮助网站所有者与您联系,以便他们可以很好地要求您退回到他们认为合理的抓取水平?
为了促进这一点,您可以做的就是在请求的 User-Agent 标头中添加有关您自己的信息。 我们在 robots.txt 文件中看到了这样的示例,例如来自 amazon.com 的文件。 在他们的 robots.txt 中,明确声明了 Google 的用户代理:GoogleBot。
在抓取过程中,您可以将自己的信息嵌入到 HTTP 请求的 User-Agent 标头中。 为了礼貌起见,您可以输入 “MyCompany-MyCrawler (mybot@mycompany.com)”等内容。 远程服务器如果对您进行违规标记,肯定会捕获此信息,如果这样提供,它为他们提供了一种方便的方式来联系您,而不仅仅是关闭您。
如何做
设置用户代理会有所不同,具体取决于您使用的工具。 最终,它只是确保将 User-Agent 标头设置为您指定的字符串。 当使用浏览器时,这通常由浏览器设置以识别浏览器和操作系统。 但您可以将任何您想要的内容放入此标头中。 使用请求时,非常简单:
url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'MyCompany-MyCrawler (mybot@mycompany.com)'}
r = requests.get(url, headers=headers)
使用 Scrapy 时,就像配置一个设置一样简单:
process = CrawlerProcess({
'USER_AGENT': 'MyCompany-MyCrawler (mybot@mycompany.com)'
})
process.crawl(Spider)
process.start()