无法使用 Scrapy 抓取网站?

Blocked from scraping a website with Scrapy?

我还在尝试从这种 URL 中抓取搜索结果,这是一份中文在线报纸的搜索结果。 Scrapy 处理一些请求,然后我得到以下终端输出。

2019-12-19 11:56:19 [scrapy.spidermiddlewares.httperror] INFO: Ignoring response <461 http://so.news.cn/getNews?keyword=%E7%BE%8E%E5%9B%BD&curPage=55&sortField=0&searchFields=0&lang=cn>: HTTP status code is not handled or not allowed

如果我加一个延迟似乎效果更好,但是速度很慢。这是因为我被网站屏蔽了 - 我能做些什么吗?我目前没有在 settings.py 中定义任何特殊的用户代理。我试过使用 scrapy-UserAgent 来旋转 User-Agent,但它似乎没有用。 VPN 会有帮助吗?

谢谢

不同的测试解决方案:

  • 每个请求之间随机暂停
  • 充分利用会话:

    1) 为一定数量的请求(30 到 60)保持相同的会话

    2) 在 30 到 60 次请求后清除您的 cookie 并更改用户代理。 使用这个简单的 python 框架:https://pypi.org/project/shadow-useragent/

    3) 如果这仍然不起作用:随着时间的推移轮换您的 IP(例如,每 30 到 60 个请求)感谢代理提供商,轮换您的用户代理,同时清除您的 cookie。

您现在应该随机查看大多数网站。如果您看到更多的机器人缓解措施 (recaptchas) 或专门的反抓取服务,这可能会变得更加棘手。

除了已经说过的内容之外,我还要补充一点,正确的代理服务提供商在这里至关重要。

不仅您必须非常频繁地轮换代理,而且它们的成功率也必须很高,所以在您的情况下,我会选择与真实用户非常相似的住宅 IP。

不是为了推广任何东西,但你应该看看那些,比如 Luminati、Oxylabs、Geosurf 等。

More information about it here