如何使用 cURL 从数组中保存 html 文件?
Posted
技术标签:
【中文标题】如何使用 cURL 从数组中保存 html 文件?【英文标题】:How to use cURL to save html files from array? 【发布时间】:2013-09-08 18:33:13 【问题描述】:我正在尝试使用 cURL 保存一些文件。我已经设法为单个 url 实现了这一点,但是当我创建一个数组来保留多个 url 时,它就不起作用了。即使打开错误报告,我也没有收到任何错误。这些文件根本没有被保存。我的代码在下面给出。任何帮助深表感谢。
<?php
error_reporting(E_ALL);
$var = "http://www.example.com/trailer/";
$urls = array("1423/10_Things_I_Hate_About_You/","1470/10.5__Apocalypse/");
$ch = curl_init();
foreach ($urls as $i => $url)
$conn[$i]=curl_init($url);
curl_setopt($conn[$i], CURLOPT_URL, $url .$var);
curl_setopt($conn[$i], CURLOPT_RETURNTRANSFER, 1);
curl_setopt($conn[$i], CURLOPT_HEADER, 0);
// grab URL and pass it to the browser
$out = curl_exec($conn[$i]);
// close cURL resource, and free up system resources
curl_close($conn[$i]);
$fp = fopen($url . "index.html", 'w');
fwrite($fp, $out);
fclose($fp);
【问题讨论】:
你的串联是向后的应该是$var.$url
是的!你发现了一个问题
【参考方案1】:
file_get_contents 和 file_put_contents 如何为您工作?您可以将以下内容组合成一行。
<?php
$homepage = file_get_contents( 'http://www.example.com/' );
file_put_contents( '/my/filename.html', $homepage );
?>
另外,我编写了一个 curl 包装类。以下是一些示例用法:
https://github.com/homer6/altumo/blob/master/source/php/Http/OutgoingHttpRequest.md
$http_response = $client->sendAndGetResponseMessage( true );
是手术线。
【讨论】:
谢谢你的回答!!!我从来没想过,所以答案是 嗨,您能告诉我在每个 foreach 完成后如何获得结果吗?因为该数组有超过 10000 个 url,所以我想知道到目前为止完成了哪一个。原因很多次是由于操作中断,它会停止下载,所以如果我能知道循环中完成了多少。 我会记录您想要跟踪的内容(或两者都记录)。您可以从“待办事项列表”中读取 url,其中每行都有一个 url。然后,当每个都成功完成时,它会从“待办事项列表”中删除该行并将其添加到“已完成”列表(这是一个单独的文本文件)中。 您可以添加一个错误处理函数来在“错误日志”中记录失败的那些(同样,这只是一个每行一个 url 的文本文件)。然后,它可以记录该错误并继续。最后,您的“待办事项列表”将是空的,但“已完成”和“错误”列表将有多个条目。见php.net/manual/en/function.set-error-handler.php以上是关于如何使用 cURL 从数组中保存 html 文件?的主要内容,如果未能解决你的问题,请参考以下文章