【问题标题】:Scrapy crawl blocked with 403/503Scrapy crawl 被 403/503 阻止
【发布时间】:2015-04-20 21:15:35
【问题描述】:

我正在运行 Scrapy 0.24.4,并且遇到过不少网站会很快关闭爬网,通常在 5 个请求内。网站为每个请求返回 403 或 503,Scrapy 放弃了。我正在运行一个包含 100 个代理的池,并启用了 RotateUserAgentMiddleware

是否有人知道网站如何快速识别 Scrapy,即使代理和用户代理发生变化? Scrapy 不会在请求标头中添加任何内容,不是吗?

【问题讨论】:

  • 如果您在两次刮擦之间暂停,则可能不需要代理。您可能会从抓取目标获得错误响应,因为您抓取的速度,或者代理本身可能出于同样的原因返回这些代码。您能否详细说明为什么要使用代理和轮换用户代理?在大多数情况下,这种行为是不道德的,如果没有更多信息,您的抓取目标可能会阻止您。

标签: python web-scraping scrapy


【解决方案1】:

某些网站包含需要运行的 javascript 代码。 Scrapy 不执行 javascript 代码,因此网络应用程序很快就知道它是一个机器人。

http://scraping.pro/javascript-protected-content-scrape/

尝试对那些返回 403 的网站使用 selenium。如果使用 selenium 进行爬网工作,您可以假设问题出在 javascript 中。 我认为 crunchbase.com 使用这种保护来防止抓取。

【讨论】:

    【解决方案2】:

    看来主要问题是没有启用 cookie。启用 cookie 后,我现在取得了更大的成功。谢谢。

    【讨论】:

      【解决方案3】:

      对我来说,cookies 已经启用。 修复它的是使用另一个用户代理,一个很常见的。

      在你的项目 USER_AGENT 的 settings.py 文件中替换为:

      USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36'
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-04-27
        • 2013-02-03
        • 2014-05-21
        • 1970-01-01
        • 2017-03-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多