php curl采集,服务器gzip压缩返回数据怎么办

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php curl采集,服务器gzip压缩返回数据怎么办相关的知识,希望对你有一定的参考价值。

参考技术A 只需要设置一下CURLOPT_ENCODING属性即可,如下:
curl_setopt($ch, CURLOPT_ENCODING, "gzip"); //指定gzip压缩

更多php cURL内容请搜索我的博客《PHP cURL实现模拟登录与采集使用方法详解教程》

参考技术B 一般服务器不会胡乱返回gzip压缩的数据,一般是客户端请求的头部里包含你浏览器能接受的压缩方式, Accept-Encoding:gzip,deflate,sdch 这里是gzip 、deflate、sdch这三种方式

PHP - curl实现采集

1、开启curl支持

由于php环境安装后默认是没有打开curl支持的,需修改php.ini文件,找到;extension=php_curl.dll,把前面的冒号去掉,重启服务即可;

2、使用curl进行数据抓取

// 初始化一个 cURL 对象 

$curl = curl_init();

// 设置你需要抓取的URL 

curl_setopt($curl, CURLOPT_URL, ‘http://www.kugou.com/yy/html/special.html‘);

 

// 设置header 

curl_setopt($curl, CURLOPT_HEADER, 1);

// 设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上。 

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

// 运行cURL,请求网页 

$data = curl_exec($curl);

// 关闭URL请求 

curl_close($curl);
//print_r($data);

3、通过正则匹配找到关键数据

//$data是curl_exec返回的的值,即采集的目标内容 

preg_match_all("/<div class=\"top\"><em>(.*)<\/em><strong><a title=\"(.*)\" href=\"(.*)\">.*<\/a>/",$data, $arr);
print_r($arr);

最后入库等处理操作....

 

以上是关于php curl采集,服务器gzip压缩返回数据怎么办的主要内容,如果未能解决你的问题,请参考以下文章

php curl采集,服务器gzip压缩返回数据怎么办

php curl采集,服务器gzip压缩返回数据怎么办

php curl采集,服务器gzip压缩返回数据怎么办

使用PHP CURL函数采集gzip编码网页报错

使用 curl 解压 gzip 数据

nginx开启gzip