用file_get_contents抓取网页乱码的2种解决方式



今天自己在写一个程序,抓取别人的网页,之前公司有些功能也会需要,但是今天在抓取网页的时候发现了一个问题 用file_get_contents抓取网页发现如截图所示的乱码情况

file_get_contents抓取网页乱码

于是用转换编码

$contents = iconv("gb2312", "utf-8//IGNORE",$contents);

之前遇到就算乱码也是网页编码的问题,html标签页不会有问题,问题还是没有解决
www.phpsong.com头部信息

于是网上找了一下
原因:说是获取的头部信息当中有Content-Encoding: gzip说明内容是GZIP压缩的
然后我试着抓取了自己的博客,发现可以正常抓取,头部信息中也带有Content-Encoding: gzip,为什么会这样就不清楚了,之后在解决

下面我推荐2种解决方法:

①、服务器安装zlib库

$contents = file_get_contents("compress.zlib://".$url);

②. 使用CURL代替file_get_contents

function curl_get($url, $gzip=false){
 $curl = curl_init($url);
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
 if($gzip) curl_setopt($curl, CURLOPT_ENCODING, "gzip"); // 关键在这里
 $content = curl_exec($curl);
 curl_close($curl);
 return $content;
}

自此问题解决了,继续下面的程序


QQ交流群:136351212
原文地址: http://www.phpsong.com/1404.html

今天自己在写一个程序,抓取别人的网页,之前公司有些功能也会需要,但是今天在抓取网页的时候发现了一个问题 用file_get_contents抓取网页发现如截图所示的乱码情况

file_get_contents抓取网页乱码

于是用转换编码

$contents = iconv("gb2312", "utf-8//IGNORE",$contents);

之前遇到就算乱码也是网页编码的问题,html标签页不会有问题,问题还是没有解决
www.phpsong.com头部信息

于是网上找了一下
原因:说是获取的头部信息当中有Content-Encoding: gzip说明内容是GZIP压缩的
然后我试着抓取了自己的博客,发现可以正常抓取,头部信息中也带有Content-Encoding: gzip,为什么会这样就不清楚了,之后在解决

下面我推荐2种解决方法:

①、服务器安装zlib库

$contents = file_get_contents("compress.zlib://".$url);

②. 使用CURL代替file_get_contents

function curl_get($url, $gzip=false){
 $curl = curl_init($url);
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
 curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
 if($gzip) curl_setopt($curl, CURLOPT_ENCODING, "gzip"); // 关键在这里
 $content = curl_exec($curl);
 curl_close($curl);
 return $content;
}

自此问题解决了,继续下面的程序


QQ交流群:136351212
查看原文: http://www.phpsong.com/1404.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值