用file_get_contents抓取网页乱码的2种解决方式
2016-02-10 12:00
561 查看
今天自己在写一个程序,抓取别人的网页,之前公司有些功能也会需要,但是今天在抓取网页的时候发现了一个问题
用file_get_contents抓取网页发现如截图所示的乱码情况
于是用转换编码
于是网上找了一下
原因:说是获取的头部信息当中有Content-Encoding: gzip说明内容是GZIP压缩的
然后我试着抓取了自己的博客,发现可以正常抓取,头部信息中也带有Content-Encoding: gzip,为什么会这样就不清楚了,之后在解决
$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抓取网页发现如截图所示的乱码情况
于是用转换编码
$contents = iconv("gb2312", "utf-8//IGNORE",$contents);之前遇到就算乱码也是网页编码的问题,html标签页不会有问题,问题还是没有解决
于是网上找了一下
原因:说是获取的头部信息当中有Content-Encoding: gzip说明内容是GZIP压缩的
然后我试着抓取了自己的博客,发现可以正常抓取,头部信息中也带有Content-Encoding: gzip,为什么会这样就不清楚了,之后在解决
下面我推荐2种解决方法:
①、服务器安装zlib库$contents = file_get_contents("compress.zlib://".$url);②. 使用CURL代替file_get_contentsfunction 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
相关文章推荐
- TypeScript学习1
- poj 2886 Who Gets the Most Candies?(线段树+反素数)
- 级联菜单(2个tableView共用一个数据源的方式)
- Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/mail/util/LineInputStream
- Android之 Animations动画
- 点语法访问属性
- 操作系统的安装
- 第七章
- JAVA 网络编程 Socket server client 编程
- DevExpress XtraGridControl 拖拽调整行顺序
- 292. Nim Game LeetCode
- web storage简述
- 6.UIScrollView与UIPageControl的认识
- broken keyboards
- 编程之美 - 一排石头游戏及扩展问题
- 护肤品总结 Skin Care (1)
- Python eval函数
- 程序员到底是一个什么职业?
- php字符串处理函数(下)
- 辗转反侧,水到渠成