被阻止使用 Scrapy 抓取网站?

问题描述 投票:0回答:3

我还在尝试从这种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 有帮助吗?

谢谢

python web-scraping scrapy user-agent
3个回答
7
投票

测试不同的解决方案:

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

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

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

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

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


1
投票

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

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

不是为了推广任何产品,但你应该关注那些,例如 Luminati、Oxylabs、Geosurf 等。

更多相关信息请点击这里


-1
投票

我理解在使用 Scrapy 等网络抓取工具时遇到挑战并被阻止是多么令人沮丧。虽然网络抓取可以为研究或商业目的提供有价值的数据,但某些网站已采取保护措施来防止违反其服务条款的抓取活动。

当面临无法使用 Scrapy 抓取网站时,重要的是要考虑以下几点:

  1. 尊重网站政策:网站有权对其内容和数据使用设置限制。查看并遵守他们的服务条款至关重要,包括有关网络抓取的任何具体规则。

  2. 调整您的抓取方法:如果您遇到阻止,可能有必要调整您的抓取工具与目标网站交互的方式。考虑实施诸如轮换 IP 地址、使用模仿人类浏览行为的标头或在请求之间添加延迟等技术,以使其看起来不像自动化脚本。

  3. 使用替代方法:有时,某些网站受到高度保护,免受传统网络抓取技术的影响。在这种情况下,探索网站提供的 API(应用程序编程接口)或 RSS 源等替代方法可能是更有效且更合规的数据访问方式。

  4. 尊重资源限制:网站的服务器资源有限,过度或激进的抓取可能会使这些资源超载,从而导致阻塞或中断。通过限制并发请求的数量并避免对目标网站的服务器造成不必要的压力,确保您的抓取工具负责任地运行。

  5. 与网站管理员沟通:如果您在调整抓取工具设置后仍遇到困难,则可能值得直接与网站管理员联系。解释您收集数据的目的和意图,并请求许可或指导如何在不违反任何规定的情况下更有效地进行。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.