无法使用 Scrapy 抓取网站?

Nic*_*zak 2 python user-agent scrapy web-scraping

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

2019-12-19 11:56:19 [scrapy.spidermiddlewares.httperror] INFO: 忽略响应 <461 http://so.news.cn/getNews?keyword=%E7%BE%8E%E5%9B%BD&curPage= 55&sortField=0&searchFields=0&lang=cn >:HTTP状态码未处理或不允许

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

谢谢

Sim*_*onR 7

测试不同的解决方案:

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

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

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

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

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