互联网上有许多工具可用于下载网站的静态副本,例如 HTTrack。还有许多工具,有些是商业工具,用于从网站“抓取”内容,例如 Mozenda。然后是一些明显内置于 PHP 和 *nix 等程序的工具,您可以在其中“file_get_contents”或“wget”或“cURL”或仅“file()”。

我对这一切感到非常困惑,我认为主要原因是我遇到的所有描述都没有使用相同的词汇。至少从表面上看,他们似乎都在做同样的事情,但也许不是。

那是我的问题。这些工具究竟在做什么?他们在做同样的事情吗?他们是否通过不同的技术做同样的事情?如果他们不做同样的事情,他们有什么不同?

最佳答案

首先,让我澄清“镜像”和“爬取”之间的区别。

镜像 指下载网站的全部内容,或网站的某些突出部分(包括 HTML、图像、脚本、CSS 样式表等)。这样做通常是为了保留和扩展对有值(value)的(通常是有限的)互联网资源的访问,或添加额外的故障转移冗余。例如,许多大学和 IT 公司镜像各种 Linux 供应商的发布文件。镜像可能意味着您计划在自己的服务器上托管网站副本(经原始内容所有者许可)。

Scraping 指的是从网站复制和提取一些有趣的数据。与镜像不同,抓取针对特定数据集(姓名、电话号码、股票报价等)而不是网站的全部内容。例如,您可以“抓取”美国人口普查局的平均收入数据或 Google 财经的股票报价。这有时违反了主机的条款和条件,使其成为非法。

可以将两者结合起来,以便将数据复制(镜像)与信息提取(抓取)问题分开。例如,您可能会发现镜像站点会更快,如果数据的提取和分析速度缓慢或流程密集,则抓取本地副本。

要回答您的其余问题...
file_get_contentsfile PHP 函数用于从本地或远程机器读取文件。该文件可能是 HTML 文件,也可能是其他内容,例如文本文件或电子表格。这不是“镜像”或“抓取”通常所指的内容,尽管您可以使用它们编写自己的基于 PHP 的镜像/抓取工具。
wgetcurl 是用于从远程服务器下载一个或多个文件的命令行独立程序,使用各种选项、条件和协议(protocol)。两者都是非常强大和流行的工具,主要区别在于 wget 具有用于镜像整个网站的丰富内置功能。
HTTrack 的意图类似于 wget,但使用 GUI 而不是命令行。这使得那些不习惯从终端运行命令的人更容易使用,但代价是失去了 wget 提供的功能和灵活性。

您可以使用 HTTrackwget 进行镜像,但如果这是您的最终目标,则您必须在生成的下载数据上运行您自己的程序以提取(抓取)信息。
Mozenda 是一个抓取工具,与 HTTrackwgetcurl 不同,它允许您针对特定数据提取所有内容,而不是盲目复制所有内容。但是,我对此几乎没有经验。

附言我通常使用 wget 来镜像我感兴趣的 HTML 页面,然后运行 ​​Ruby 和 R 脚本的组合来提取和分析数据。

关于curl - httrack wget curl 抓取和获取,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19098315/

10-13 09:36