抓取和抓取随机网站

Crawling and scraping random websites

我想构建一个网络爬虫,它在 Internet 上随机移动并将损坏的 (http statuscode 4xx) 图像链接放入数据库。

到目前为止,我使用节点包 requestcheerio 成功构建了一个抓取工具。我知道限制是动态创建内容的网站,所以我正在考虑切换到 puppeteer。让它尽可能快会很好,但不是必需的,因为服务器应该 运行 不确定。

我最大的问题:我从哪里开始爬行?

我希望抓取工具以递归方式查找随机网页,这些网页可能包含内容并且可能包含损坏的链接。有人可以帮助找到解决此问题的明智方法吗?

我不知道这是否是您要查找的内容,但是只要您单击 新建随机网站 按钮,此 website 就会呈现一个新的随机网站,如果你能用 puppeteer 抓取它可能会有用。

域列表

一般而言,以下服务提供域名列表:

  • Alexa 前 100 万top-1m.csv.zip(免费)
    根据 Alexas 算法
  • ,包含 100 万行 most visited websites 的 CSV 文件
  • 威瑞信Top-Level Domain Zone File Information(免费 IIRC)
    您可以通过链接页面直接询问 Verisign,以提供他们的 .com.net 域列表。您必须填写表格以请求数据。如果我没记错的话,该列表是免费提供的,用于研究目的(也可能出于其他原因),但可能需要几周时间才能获得批准。
  • whoisxmlapi.comAll Registered Domains(需要付款)
    该公司出售各种包含域名、注册商、IP 等信息的列表
  • premiumdrops.comDomain Zone lists(需要付款)
    与上一个类似,您可以获得不同域 TLD 的列表。

爬行方法

一般来说,我会假设一个网站越老,它就越有可能包含损坏的图像(但这本身已经是一个大胆的假设)。因此,如果您使用包含域注册日期的列表,则可以先尝试抓取旧网站。此外,您可以使用 multiple instances of puppeteer.

来加快抓取过程

让您大致了解抓取速度:假设您的服务器每秒可以抓取 5 个网站(这需要 10-20 个并行浏览器实例,假设每个页面需要 2-4 秒),您大约需要两天时间100 万页 (1,000,000 / 5 / 60 / 60 / 24 = 2.3)。

我自己最近也遇到了这个问题,并且能够在这个 post 的帮助下解决它。为了澄清其他人之前所说的内容,您可以从各种来源获得网站列表。 Thomas Dondorf 关于使用 Verisign 的 TLD 区域文件信息的建议目前已经过时,正如我在尝试联系他们时了解到的那样。相反,您应该查看 ICANN's CZDNS。本网站允许您访问任何名称的 TLD 文件信息(应请求),而不仅仅是 .com 和 .net,从而允许您抓取更多网站。在爬虫方面,正如你所说,Puppeteer 是一个不错的选择。