爬虫爬取频率过高的问题

发布于 2022-09-03 09:45:59 字数 171 浏览 10 评论 0

想写一个抓取商城商品详情页的程序,开启多个线程并行抓取,但是这样会对被抓取的网站造成巨大压力,导致IP被封或被请求重定向.

请问如何提高抓取效率并避免抓取失败?

搜索引擎如lucene等也会造成对网站的频繁访问,它是怎么解决这个问题的?

大家有啥推荐的技术?

谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

稳稳的幸福 2022-09-10 09:45:59

选择爬虫方案最终取决于需要爬去的数据量,时间成本和金钱成本。

最快速的方案 - 使用HTTP代理
使用HTTP代理 + 异步IO,每秒可以处理100左右的HTTP请求(根据机器配置和网络而定)。但是免费的HTTP代理一是需要自己来抓,二是并不稳定。如果使用付费的HTTP代理,这个需要钱了。
比使用HTTP代理更简单的方案 - 多线程
每次开2-4个线程来访问页面,也就是同时只能处理2-4个HTTP请求,然后一直跑下去,如果需要爬去的数据量不多,这个是最简单的解决方案。比如处理一次HTTP请求需要200ms,每次处理4个请求,一秒可以抓取20个页面,一天可以抓取 20 * 60 * 60 * 24 = 1728000 。
最合适的方案 - 分布式
使用多线程 + 分布式,比如一台机器抓取一天可以抓取172w数据,两台就是344w数据。
最终解决方案 - 分布式 + HTTP代理
根据之前爬去拉勾网的时实践,同一个IP同时发送4个HTTP请求是不会被ban的,所以一个IP可以保证4个HTTP并发量,如果有10个HTTP代理,每秒就可以获取200个页面,一天可以爬去200 * 60 * 60 * 24 = 17280000个页面。最好是分布式不使用代理,因为每加一台机器,就相当于多了一个IP。

具体的一个IP的并发量需要自己测试,不过最好一个IP同时只处理一个HTTP连接。

其它的注意事项

  1. 设置Uuser-Agent

  2. 带上cookie,以抓取天猫商城为例,如果不带上cookie,天猫每次需要重定向3次才会跳转到目标页面

溇涏 2022-09-10 09:45:59

设置爬虫的时间间隔,可以每隔多长时间爬一次。

梦里泪两行 2022-09-10 09:45:59

要使用代理ip来做,一个ip大量请求会被封的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文