curl 抓取网页(下载网站的全部内容同一件事,他们有什么不同?)
优采云 发布时间: 2022-02-28 18:18curl 抓取网页(下载网站的全部内容同一件事,他们有什么不同?)
互联网上有很多工具可以下载 网站 的静态副本,例如 HTTrack。还有许多工具,一些商业工具,用于从 网站 中“抓取”内容(例如 Mozenda)。然后显然有一些工具内置在 PHP 和 *nix 等程序中,您可以在其中“file_get_contents”或“wget”或“cURL”或只是“file()”。
我对这一切感到非常困惑,我认为主要原因是我遇到的所有描述都没有使用相同的词汇。至少从表面上看,他们似乎都在做同样的事情,但也许不是。
那是我的问题。这些工具到底在做什么?他们在做同样的事情吗?他们是否通过不同的技术做同样的事情?如果他们不做同样的事情,他们有什么不同?
最佳答案
首先,让我澄清一下“镜像”和“抓取”之间的区别。
镜像意味着下载网站 的全部内容或网站 的一些主要部分(包括HTML、图像、脚本、CSS 样式表等)。通常这样做是为了保留和扩展对有价值的(通常是有限的)互联网资源的访问,或者增加额外的故障转移冗余。例如,许多大学和 IT 公司反映了各种 Linux 供应商的分发文件。镜像可能意味着您计划在自己的服务器上托管 网站 的副本(在原创内容所有者的许可下)。
爬行意味着从 网站 复制和提取一些有趣的数据。与镜像不同,抓取目标是特定数据集(姓名、电话号码、股票报价等),而不是 网站 的全部内容。例如,您可以“抓取”来自美国人口普查局的平均收入数据或来自 Google 财经的股票报价。有时这违反了主机的条款和条件,使其非法。
可以将两者结合起来,以便将数据复制(镜像)问题与信息提取(抓取)问题分开。例如,您可能会发现它更快地镜像站点,然后如果数据提取和分析速度较慢或处理密集,则获取本地副本。
要回答剩下的问题...
file_get_contents 和 file PHP 函数用于从本地或远程计算机读取文件。该文件可以是 HTML 文件或其他文件,例如文本文件或电子表格。这不是“mirror”或“scratch”通常所指的,尽管您可以使用它们来编写您自己的基于 PHP 的 mirror/grabber。
wget 和 curl 是命令行独立程序,用于使用各种选项、条件和协议从远程服务器下载一个或多个文件。两者都是强大且流行的工具,主要区别在于 wget 具有丰富的内置功能来镜像整个 网站。
HTTrack 旨在类似于 wget,但使用 GUI 而不是命令行。这使得那些不方便从终端运行命令的人更容易使用,但代价是失去了 wget 提供的功能和灵活性。
您可以使用 HTTrack 和 wget 进行镜像,但如果这是您的最终目标,您必须在生成的下载数据上运行自己的程序以提取(获取)信息。
Mozenda 是一种抓取工具,与 HTTrack、wget 或 curl 不同,它允许您针对特定数据进行提取,而不是盲目地复制所有内容。不过,我经验不足。
PS 我通常使用 wget 来镜像我感兴趣的 HTML 页面,然后运行 Ruby 和 R 脚本的组合来提取和分析数据。