如何加快web爬行ID nokogiri/ruby的迭代

如何加快web爬行ID nokogiri/ruby的迭代,ruby,web-crawler,nokogiri,Ruby,Web Crawler,Nokogiri,我想做的是在给定10位数字id的情况下遍历所有可能的产品页面 我想抓取的页面示例是somewebsite.com/product?productid=1000000000 scraper将转到页面查看标记是否存在,以查看它是否是产品页面,然后记录url(如果是),如果不是,则转到下一页 执行1乘1的迭代(productid=large number++)太慢了,从一些示例产品ID来看,似乎没有模式的数字(如(12121212))更可能是我想问的是,如何在更合理的时间内迭代这些页面。我现在正在用r

我想做的是在给定10位数字id的情况下遍历所有可能的产品页面

我想抓取的页面示例是somewebsite.com/product?productid=1000000000

scraper将转到页面查看标记是否存在,以查看它是否是产品页面,然后记录url(如果是),如果不是,则转到下一页


执行1乘1的迭代(productid=large number++)太慢了,从一些示例产品ID来看,似乎没有模式的数字(如(12121212))更可能是我想问的是,如何在更合理的时间内迭代这些页面。我现在正在用ruby和nokogiri一起做这件事。

迭代这么多的产品ID是对待目标网站的一种可怕的方式,很可能你会被禁止,因为他们的产品不可能按顺序编号。换句话说,你会得到很多缺失的页面响应,这些响应会被记录下来,如果他们的web开发团队表现良好,他们会得到一个列表以及请求的IP

相反,要聪明,找到一个列出他们所有产品的页面,解析出这个列表,然后浏览它。如果没有一个页面包含它们,而是很多,那么从第一个页面开始,遍历所有页面,直到到达最后一个页面。将产品ID聚合到一个数组中,或者在阅读每个页面时对其进行处理

另外,在迭代之间睡觉,对他们的站点要非常温柔和友好。如果不这样做,你也可能被禁止,因为一个接一个地请求数千个页面,将提高他们主机的CPU和网络使用率,这将再次提醒他们你正在破坏他们的网站,并对他们为普通客户服务的能力产生负面影响


最后,如果你真的想用正确的方式做事,你第一次连接到网站应该请求他们的“robots.txt”文件。处理它,并在代码中使用这些指令。该文件放在那里是为了帮助机器人/蜘蛛/刮刀做正确的事情,而不是不公平地对抗网站或网站管理员。不这样做肯定会被禁止。有关详细信息,请访问“”和“”。

我们需要查看您当前的迭代代码,只需简单地介绍处理该部分的代码即可。我们还需要更好地理解ID。使用遏制gem下载所有页面,然后解析它们。