本文目錄一覽:
php的curl怎麼爬取網頁內容
創建一個新cURL資源
設置URL和相應的選項
抓取URL並把它傳遞給瀏覽器
關閉cURL資源,並且釋放系統資源
代碼案例:
用JS翻頁的網頁如何用PHP實現採集
最簡單的辦法就是在你的所有中文頁面上,一般在導航位置加一個英文頁面首頁的超鏈接。這樣用戶點英文那個鏈接就進入英文頁面了。同樣的,在所有的英文頁面導航位置都加一個中文首頁鏈接。推薦你用圖片做這兩個鏈接,這樣不會因為用戶沒有裝對應的語言系統而出現奇怪字元。比如歐美用戶一般是不會裝中文系統的,頁面上有中文字元的時候必然顯示為亂碼。
網站目錄當然要為中文和英文各建一個獨立的目錄,裡面放置各自的頁面了。
如果使用資料庫的話,則思路是一樣的。
php curl 大量數據採集
這個需要配合js,打開一個html頁面,首先js用ajax請求頁面,返回第一個頁面信息確定處理完畢(ajax有強制同步功能),ajax再訪問第二個頁面。(或者根據伺服器狀況,你可以同時提交幾個URL,跑幾個相同的頁面)
參數可以由js產生並傳遞url,php後台頁面根據URL抓頁面。然後ajax通過php,在資料庫或者是哪裡設一個標量,標明檢測到哪裡。由於前台的html頁面執行多少時候都沒問題,這樣php的內存限制和執行時間限制就解決了。
因為不會浪費大量的資源用一個頁面來跑一個瞬間500次的for循環了。(你的500次for循環死了原因可能是獲取的數據太多,大過了php限制的內存)
不過印象中curl好像也有強制同步的選項,就是等待一個抓取後再執行下一步。但是這個500次都是用一個頁面線程處理,也就是說肯定會遠遠大於30秒的默認執行時間。
php獲取網頁源碼內容有哪些辦法
可以參考以下幾種方法:
方法一: file_get_contents獲取
span style=”white-space:pre” /span$url=””;
span style=”white-space:pre” /span$fh= file_get_contents
(”);span style=”white-space:pre” /spanecho $fh;
方法二:使用fopen獲取網頁源代碼
span style=”white-space:pre” /span$url=””;
span style=”white-space:pre” /span$handle = fopen ($url, “rb”);
span style=”white-space:pre” /span$contents = “”;
span style=”white-space:pre” /spanwhile (!feof($handle)) {
span style=”white-space:pre” /span$contents .= fread($handle, 8192);
span style=”white-space:pre” /span}
span style=”white-space:pre” /spanfclose($handle);
span style=”white-space:pre” /spanecho $contents; //輸出獲取到得內容。
方法三:使用CURL獲取網頁源代碼
$url=””;
$UserAgent = ‘Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 3.0.04506; .NET CLR 3.5.21022; .NET CLR 1.0.3705; .NET CLR 1.1.4322)’;
$curl = curl_init(); //創建一個新的CURL資源
curl_setopt($curl, CURLOPT_URL, $url); //設置URL和相應的選項
curl_setopt($curl, CURLOPT_HEADER, 0); //0表示不輸出Header,1表示輸出
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //設定是否顯示頭信息,1顯示,0不顯示。//如果成功只將結果返回,不自動輸出任何內容。如果失敗返回FALSE
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_ENCODING, ”); //設置編碼格式,為空表示支持所有格式的編碼
//header中「Accept-Encoding: 」部分的內容,支持的編碼格式為:”identity”,”deflate”,”gzip”。
curl_setopt($curl, CURLOPT_USERAGENT, $UserAgent);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
//設置這個選項為一個非零值(象 「Location: 「)的頭,伺服器會把它當做HTTP頭的一部分發送(注意這是遞歸的,PHP將發送形如 「Location: 「的頭)。
$data = curl_exec($curl);
echo $data;
//echo curl_errno($curl); //返回0時表示程序執行成功
curl_close($curl); //關閉cURL資源,並釋放系統資源
拓展資料
PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。
用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。
參考資料:PHP(超文本預處理器)-百度百科
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/308666.html