PHP獲取網(wǎng)頁內(nèi)容注意事項(xiàng)
1、網(wǎng)絡(luò)會(huì)出錯(cuò),任何錯(cuò)誤都可能。例如機(jī)器宕了,網(wǎng)線斷了,域名出錯(cuò)了,網(wǎng)絡(luò)超時(shí)了,頁面沒有了,網(wǎng)站跳轉(zhuǎn)了,服務(wù)被禁了,主機(jī)負(fù)載不夠了…
2、服務(wù)器加上了限制,只讓常見瀏覽器訪問
3、服務(wù)器加上了防盜鏈的限制
4、某些網(wǎng)站不管你HTTP請(qǐng)求里有沒有Accept-Encoding頭部,也不管你頭部具體內(nèi)容是什么,反正總給你發(fā)gzip后的內(nèi)容
5、URL鏈接千奇百怪,帶漢字的也罷了,有的甚至還有回車換行
6、某些網(wǎng)站HTTP頭部里有一個(gè)Content-Type,網(wǎng)頁里有好幾個(gè)Content-Type,更過分的是,各個(gè)Content-Type還不一樣,最過分的
是,這些Content-Type可能都不是正文里使用的Content-Type,從而導(dǎo)致亂碼
7、網(wǎng)絡(luò)鏈接很慢,乘分析幾千個(gè)頁面的時(shí)間,建議你可以好好吃頓飯去了
PHP獲取網(wǎng)頁內(nèi)容的方法
方法一、使用file_get_contents方法實(shí)現(xiàn)
$url = "http://news.sina.com.cn/c/nd/2016-10-23/doc-ifxwztru6951143.shtml"; $html = file_get_contents($url); //如果出現(xiàn)中文亂碼使用下面代碼 //$getcontent = iconv("gb2312", "utf-8",$html); echo "<textarea style='width:800px;height:600px;'>".$html."</textarea>";
方法二、使用curl實(shí)現(xiàn)
$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);
加上這句代碼,表示如果請(qǐng)求被重定向時(shí),可以訪問到最終的請(qǐng)求頁面,不然請(qǐng)求的結(jié)果會(huì)顯示如下內(nèi)容:
<head><title>Object moved</title></head> <body><h1>Object Moved</h1>This object may be found <a href="some link." rel="external nofoll
推薦教程:PHP視頻教程
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com