【问题标题】:Scrapy - Should I enable cookies while crawlingScrapy - 我应该在抓取时启用 cookie
【发布时间】:2017-03-04 02:17:36
【问题描述】:

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

我想如果我启用它,网站会知道 IP 所做的历史,并且在某些时候注意到该模式并且不会允许它(这是我的猜测)所以我应该禁用它?或者这甚至不是关于 cookie 的工作原理以及它们的用途

【问题讨论】:

    标签: python cookies scrapy web-crawler


    【解决方案1】:

    您如何访问这些 URL,您使用 urllib 库吗?如果是这样,您可能没有注意到,但 urllib 有一个默认的用户代理。用户代理是 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 请求之间添加睡眠调用,那么这可能会解决您的验证码问题!

    验证码出现的其他原因:

    • 您正在点击旨在捕获爬虫的蜜罐链接(位于 html 代码中但未显示在网页上的链接)。
    • 您可能需要更改抓取模式,因为它可能被标记为“非人类”。
    • 检查网站 robots.txt 文件,其中显示允许抓取和不允许抓取的内容。

    【讨论】:

    • 我正在使用scrapy,并且正在欺骗我的用户代理。我不确定它是否有助于启用/禁用 cookie 或者我应该在 settings.py 中采用哪种方式
    • 查看我的编辑,这可能是由于您通过网页抓取的速度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 2013-08-12
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多