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

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

偏爱自由 发布于 2016-11-29 字数 183 浏览 1069 回复 3

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

如果你对这篇文章有疑问,欢迎到本站 社区 发帖提问或使用手Q扫描下方二维码加群参与讨论,获取更多帮助。

扫码加入群聊

发布评论

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

评论(3

偏爱自由 2017-10-12 3 楼

可不可以使用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 2 楼

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 1 楼

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