PHP-curl怎么样才可以抓取网页中的一部分就结束呢?
比如说,我想抓取网页中的title,要是把全部网页都下载下来的话太浪费了,只要一部分就可以了,用curl怎么样才能实现呢?file_get_contents倒是可以,但是不太稳定。有没有别的更好的办法?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
比如说,我想抓取网页中的title,要是把全部网页都下载下来的话太浪费了,只要一部分就可以了,用curl怎么样才能实现呢?file_get_contents倒是可以,但是不太稳定。有没有别的更好的办法?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(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);
我测试过,如果说单纯是为了省流量的话,这样是可行的。
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);
?>
加上HTTP请求头 Range: bytes=1000-2000
前提是服务器得支持断点续传