PHP取得網頁內容注意事項
#1、網路會出錯,任何錯誤都可能。例如機器宕了,網路線斷了,網域名稱出錯了,網路超時了,頁面沒有了,網站跳轉了,服務被禁了,主機負載不夠了…
2、伺服器加上了限制,只讓常見瀏覽器存取
3、伺服器加上了防盜鏈的限制
4、某些網站不管你HTTP請求裡有沒有Accept-Encoding頭部,也不管你頭部具體內容是什麼,反正總給你發gzip後的內容
5、URL連結千奇百怪,帶漢字的也罷了,有的甚至還有回車換行
#6、某有些網站HTTP頭部裡有一個Content-Type,網頁裡有好幾個Content-Type,更過分的是,各個Content-Type還不一樣,最過分的是,這些Content-Type可能都不是正文裡使用的Content-Type,從而導致亂碼
7、網絡鏈接很慢,乘分析幾千個頁面的時間,建議你可以好好吃頓飯去了
PHP獲取網頁內容的方法
方法一、使用file_get_contents方法實作
$url = "http://news.sina.com.cn/c/nd/2016-10-23/doc-ifxwztru6951143.shtml"; $html = file_get_contents($url); //如果出现中文乱码使用下面代码 //$getcontent = iconv("gb2312", "utf-8",$html); echo "<textarea style='width:800px;height:600px;'>".$html."</textarea>";
方法二、使用curl實作
$url = "http://news.sina.com.cn/c/nd/2016-10-23/doc-ifxwztru6951143.shtml"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); $html = curl_exec($ch); curl_close($ch); echo "<textarea style='width:800px;height:600px;'>".$html."</textarea>"; curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
加上這句程式碼,表示如果請求被重定向時,可以存取到最終的請求頁面,不然請求的結果會顯示如下內容:
<head><title>Object moved</title></head> <body><h1>Object Moved</h1>This object may be found <a href="some link." rel="external nofoll
推薦教學:PHP影片教學
以上是php取得網頁內容注意什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!