在 ruby 中筛选数千页的最佳做法是什么?
What are the best practices to screen scrape thousands of pages in ruby?
我正在构建一个 ruby 脚本,该脚本可以从屏幕上抓取很多项目来获得其产品 url(超过 20 万个项目)。现在我必须访问每个项目的页面并复制一些数据。
更快打开超过 20 万个页面的最佳做法是什么(在代码和服务器方面)?除了代码之外,是否有任何特殊的服务器可以借用几个小时来 运行 我的脚本?
任何建议都会很棒。
非常感谢朋友们。
对于大多数爬虫来说,由于您在这里的大部分时间都花在等待 IO 上,因此您需要使用多线程或事件 IO 设置来提高吞吐量。在服务器方面,您只需要能够维持足够带宽的东西来满足您的所有请求而不会达到上限;没什么特别的。
但是,您在这里遇到的更大问题是,您应该非常确定您遵守网站的 robots.txt
and/or 请求速率限制并适当地限制您的请求;几千 requests/sec 到服务器是永久阻止您的 IP 的好方法。每秒发出绝对不超过 1 个请求通常被认为是礼貌的,您应该解析目标站点的 robots.txt 以查看允许抓取哪些 URL 以及抓取它们的速度。
我正在构建一个 ruby 脚本,该脚本可以从屏幕上抓取很多项目来获得其产品 url(超过 20 万个项目)。现在我必须访问每个项目的页面并复制一些数据。
更快打开超过 20 万个页面的最佳做法是什么(在代码和服务器方面)?除了代码之外,是否有任何特殊的服务器可以借用几个小时来 运行 我的脚本?
任何建议都会很棒。 非常感谢朋友们。
对于大多数爬虫来说,由于您在这里的大部分时间都花在等待 IO 上,因此您需要使用多线程或事件 IO 设置来提高吞吐量。在服务器方面,您只需要能够维持足够带宽的东西来满足您的所有请求而不会达到上限;没什么特别的。
但是,您在这里遇到的更大问题是,您应该非常确定您遵守网站的 robots.txt
and/or 请求速率限制并适当地限制您的请求;几千 requests/sec 到服务器是永久阻止您的 IP 的好方法。每秒发出绝对不超过 1 个请求通常被认为是礼貌的,您应该解析目标站点的 robots.txt 以查看允许抓取哪些 URL 以及抓取它们的速度。