PHP-curl怎么样才可以抓取网页中的一部分就结束呢?

发布于 2016-11-29 14:50:19 字数 108 浏览 1155 评论 3

比如说,我想抓取网页中的title,要是把全部网页都下载下来的话太浪费了,只要一部分就可以了,用curl怎么样才能实现呢?file_get_contents倒是可以,但是不太稳定。有没有别的更好的办法?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

偏爱自由 2017-10-12 10:25:23

可不可以使用fopen()、fgets()、fclose()组合?

$page = fopen($url,"r");
while(! feof($page))
{
$c = fgets($page);
$c = strpos($c, '<title>');
if ($c != 0)
{
return true;
break;
}
}
fclose($page);

我测试过,如果说单纯是为了省流量的话,这样是可行的。

晚风撩人 2017-03-29 23:18:16

CURLOPT_BUFFERSIZE 每次获取的数据中读入缓存的大小,但是不保证这个值每次都会被填满。

在cURL 7.10中被加入。

CURLOPT_RESUME_FROM 在恢复传输时传递一个字节偏移量(用来断点续传)。

<?php

function callback($download_size, $downloaded, $upload_size, $uploaded)
{
// do your progress stuff here
}

$ch = curl_init('http://www.example.com');

// This is required to curl give us some progress
// if this is not set to false the progress function never
// gets called
curl_setopt($ch, CURLOPT_NOPROGRESS, false);

// Set up the callback
curl_setopt($ch, CURLOPT_PROGRESSFUNCTION, 'callback');

// Big buffer less progress info/callbacks
// Small buffer more progress info/callbacks
curl_setopt($ch, CURLOPT_BUFFERSIZE, 128);

$data = curl_exec($ch);

?>

瑾兮 2017-01-01 13:13:59

加上HTTP请求头 Range: bytes=1000-2000
前提是服务器得支持断点续传

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文