php网页抓取乱码( 之前遇到就算乱码也是网页编码的问题,怎么办)
优采云 发布时间: 2021-09-09 17:14php网页抓取乱码(
之前遇到就算乱码也是网页编码的问题,怎么办)
<p>今天自己在写一个程序,抓取别人的网页,之前公司有些功能也会需要,但是今天在抓取网页的时候发现了一个问题
用file_get_contents抓取网页发现如截图所示的乱码情况
于是用转换编码
$contents = iconv("gb2312", "utf-8//IGNORE",$contents);</p>
即使之前遇到过乱码,也是网页编码的问题。 html选项卡就没有问题了,问题还是没有解决
我在网上找到的
原因:据说得到的头信息中有Content-Encoding: gzip,说明内容是用GZIP压缩的
然后尝试爬取我的博客,发现可以正常爬取,头信息中还收录Content-Encoding:gzip。不清楚为什么会这样,稍后我会解决它
我推荐以下两种解决方案:
①、服务器安装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