用file_get_contents抓取網頁亂碼的2種解決方式
阿新 • • 發佈:2019-01-23
今天自己在寫一個程式,抓取別人的網頁,之前公司有些功能也會需要,但是今天在抓取網頁的時候發現了一個問題 用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_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