我想构建一个网络爬虫,该爬虫可在互联网上随机访问,并将损坏的(http状态码4xx)图像链接放入数据库中。
到目前为止,我已经成功使用节点包request
和cheerio
构建了一个scraper。我了解限制是网站可以动态创建内容,因此我正在考虑切换到puppeteer
。尽可能快地进行此操作会很好,但是由于服务器应无限期运行,因此没有必要。
我最大的问题:我从哪里开始爬网?
我希望搜寻器以递归方式找到随机网页,这些网页可能具有内容并且链接可能已损坏。有人可以帮助找到解决此问题的明智方法吗?
答案 0 :(得分:1)
通常,以下服务提供域名列表:
.com
和.net
域的列表。您必须填写表格以请求数据。如果我没记错的话,出于研究目的(可能也是出于其他原因),该列表是免费提供的,但是可能要过几周才能获得批准。通常,我认为网站越老,它包含破碎图像的可能性就越大(但这本身已经是一个大胆的假设)。因此,如果您使用包含域注册日期的列表,则可以尝试首先爬网较旧的网站。此外,您可以使用multiple instances of puppeteer来加快抓取过程。
让您大致了解抓取速度:假设您的服务器每秒可以抓取5个网站(这需要10-20个并行浏览器实例,假设每页2-4秒),那么您大约需要2天的时间才能抓取1百万页(1,000,000 / 5 / 60 / 60 / 24 = 2.3
)。
答案 1 :(得分:0)
我不知道这是否是您要的内容,但是只要您单击新建随机网站按钮,此website就会呈现一个新的随机网站,如果你可以用木偶戏擦它。
答案 2 :(得分:0)
最近我本人也有这个问题,并且可以在本文的帮助下解决。为了弄清楚其他人之前所说的内容,您可以从各种来源获得网站列表。正如我在尝试联系Verisign的TLD区域文件信息时所说的那样,Thomas Dondorf的建议目前已过时。相反,您应该查看ICANN's CZDNS。该网站允许您(按请求)访问TLD文件信息的任何名称,而不仅仅是.com和.net,从而使您可以潜在地抓取更多网站。如您所说,就爬网而言,Puppeteer是一个不错的选择。