如何使用PHP下载HTML?

Rob*_*cks 2 html php scripting download

如何从PHP下载URL中的HTML文件,并下载CSS和图像等所有依赖项并将这些依赖项存储到我的服务器作为文件?我要求太多了吗?

Byr*_*ock 7

最简单的方法是使用wget.它可以递归下载HTML及其依赖项.否则你将自己解析HTML.有关在纯PHP中执行此操作的详细信息,请参阅Yacoby的答案.


Yac*_*oby 5

我建议使用 html 解析库来简化一切。即类似Simple HTML DOM 的东西。

使用简单的 HTML DOM:

$html = file_get_html('http://www.google.com/');
foreach($html->find('img') as $element){
    //download image
}
Run Code Online (Sandbox Code Playgroud)

对于下载文件(和 html),我建议使用诸如 curl 之类的 HTTP 包装器,因为它允许对使用 file_get_contents 进行更多控制。但是,如果您想使用 file_get_contents,php 站点上有一些关于如何获取 URL 的很好的示例

更复杂的方法允许您指定标题,如果您想设置用户代理,这可能很有用。(如果您经常抓取其他网站,最好有一个自定义用户代理,因为您可以使用它来让网站管理您的网站或联系点,如果您使用太多带宽,这比管理员阻止您的网站要好IP地址)。

$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n"
  )
);

$context = stream_context_create($opts);
$file = file_get_contents('http://www.example.com/', false, $context);
Run Code Online (Sandbox Code Playgroud)

虽然当然可以简单地通过以下方式完成:

$file = file_get_contents('http://www.example.com/');
Run Code Online (Sandbox Code Playgroud)