首先,让我澄清一下“镜像”和“抓取”之间的区别。
镜像是指下载网站的全部内容,或其某些重要部分(包括 HTML、图像、脚本、CSS 样式表等)。这样做通常是为了保留和扩展对有价值(且通常有限)的互联网资源的访问,或添加额外的故障转移冗余。例如,许多大学和 IT 公司都会镜像各个 Linux 供应商的发行档案。镜像可能意味着您计划在自己的服务器上托管网站的副本(经过原始内容所有者的许可)。
Scraping指从网站上复制并提取一些有趣的数据。与镜像不同,抓取的目标是特定的数据集(姓名、电话号码、股票报价等),而不是网站的全部内容。例如,您可以从美国人口普查局“抓取”平均收入数据或从 Google 财经“抓取”股票报价。有时这样做是违反主机的条款和条件的,因此是非法的。
可以将两者结合起来,以便将数据复制(镜像)与信息提取(抓取)问题分开。例如,您可能会发现,如果数据的提取和分析速度缓慢或过程密集,那么镜像站点然后抓取本地副本会更快。
回答你剩下的问题......
file_get_contents
and file
PHP 函数用于从本地或远程计算机读取文件。该文件可能是 HTML 文件,也可能是其他文件,例如文本文件或电子表格。这不是“镜像”或“抓取”通常所指的内容,尽管您可以使用它们编写自己的基于 PHP 的镜像/抓取器。
wget
and curl
是命令行独立程序,用于使用各种选项、条件和协议从远程服务器下载一个或多个文件。两者都是非常强大且流行的工具,主要区别在于wget
具有丰富的内置功能来镜像整个网站。
HTTrack
类似于wget
其意图,但使用 GUI 而不是命令行。这使得那些不习惯从终端运行命令的人更容易使用,但代价是失去了wget
.
您可以使用HTTrack
and wget
用于镜像,但如果这是您的最终目标,您将必须对生成的下载数据运行您自己的程序以提取(抓取)信息。
Mozenda
是一个刮刀,与HTTrack
, wget
or curl
允许您有针对性地提取特定数据,而不是盲目复制所有内容。然而,我对此缺乏经验。
附:我通常使用wget
镜像我感兴趣的 HTML 页面,然后运行 Ruby 和 R 脚本的组合来提取和分析数据。