我只想获取HTML正文的一些行,并且我正在使用PHP和c URL (例如,前10行)。通过获取某些部分,我的意思是我不想下载整个文件并获取其中的某些部分。
有没有办法只从服务器本身获取HTML文件的某些部分?通过在curl或PHP中进行一些设置。
发布于 2014-01-15 17:36:15
如果服务器支持,您可以发出range请求。
在您的HTTP请求标头中添加:
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Range: 0-1500',
));…获取前1500个字节,这可能是也可能不是前10行,这取决于行的长度。
这样做的问题(除了可能缺乏服务器的支持)是您需要知道文档中的哪些字节,然后必须从部分HTML而不是整个HTML文档中提取数据。
发布于 2014-01-15 22:10:24
您可以使用CURL从URL下载部分内容:
下面是一个实现该功能的函数:
function curl_get_content($url,$range_start,$range_end)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_HTTPHEADER, array ("Range: bytes=$range_start-$range_end"));
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
curl_get_content("http://www.example.org/some-file.zip",0,5000) 返回前5000个字节。
备注:
确定远程服务器是否支持HTTP206的
curl -I http://s0.cyberciti.org/images/misc/static/2012/11/ifdata-welcome-0.png示例输出:
HTTP/1.0 200 OK
Content-Type: image/png
Content-Length: 36907
Connection: keep-alive
Server: nginx
Date: Wed, 07 Nov 2012 00:44:47 GMT
X-Whom: l3-com-cyber
Cache-Control: public, max-age=432000000
Expires: Fri, 17 Jul 2026 00:44:46 GMT
Accept-Ranges: bytes // It accepts !
ETag: "278099835"
Last-Modified: Mon, 05 Nov 2012 23:06:34 GMT
Age: 298127https://stackoverflow.com/questions/21133597
复制相似问题