Scrapy - 我应该在爬行时启用cookie

时间:2017-03-03 17:16:10

标签: python cookies scrapy web-crawler

我正在从一些亚马逊网址抓取数据,但当然有时我会得到验证码。我想知道启用/禁用cookie选项与任何这个有关。我在爬行时旋转了大约15个代理。我想问题是我应该在settings.py中为干净的页面启用还是禁用cookie,或者它是无关紧要的?

我想如果我启用它,网站会知道IP的作用的历史,并在一些点之后注意到模式并且不允许它(这是我的猜测)所以我应该禁用它?或者这对于饼干的工作方式和它们的用途是不正确的

1 个答案:

答案 0 :(得分:1)

您如何访问这些网址,是否使用了urllib库?如果是这样,您可能没有注意到,但urllib有一个默认的用户代理。 user-agent是HTTP请求的一部分(存储在标头中),用于标识用于访问页面的软件类型。这允许网站在不同的浏览器上正确显示其内容,但也可用于确定您是否使用自动程序(他们不喜欢机器人)。

现在,默认的urllib用户代理告诉您正在使用python访问该页面的网站(通常是一个很大的禁忌)。您可以非常轻松地欺骗您的用户代理,以阻止任何讨厌的验证码出现!

headers = { 'User-Agent' : 'Mozilla/5.0' }
req = urllib2.Request('www.example.com', None, headers)
html = urllib2.urlopen(req).read()

由于您正在使用scrapy来抓取网页,因此您可能需要更改您的settings.py文件,以便您可以在那里更改用户代理。

<强> 修改

为什么验证码可能出现在整个地方的其他原因是因为您在网站上移动太快。如果您在url请求之间添加睡眠调用,那么这可能会解决您的验证码问题!

Captcha出现的其他原因:

  • 您正在点击专门用于捕获抓取工具的蜜罐链接(html代码中但未显示在网页上的链接)。
  • 您可能需要更改抓取模式,因为它可能被标记为&#34;非人类&#34;。
  • 检查网站robots.txt文件,该文件显示允许抓取的内容。