中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何在curl中使用get_html函數

發布時間:2020-12-23 15:19:54 來源:億速云 閱讀:232 作者:Leah 欄目:開發技術

本篇文章給大家分享的是有關如何在curl中使用get_html函數,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

大致大綱:

1.curl數據采集系列之單頁面采集函數get_html

2.curl數據采集系列之多頁面并行采集函數get_htmls

3.curl數據采集系列之正則處理函數get _matches

4.curl數據采集系列之代碼分離

5.curl數據采集系列之并行邏輯控制函數web_spider


單頁面采集在數據采集過程中是最常用的一個功能 有時在服務器訪問限制的情況下 只能使用這種采集方式 慢 但是可以簡單的控制 所以寫好一個常用的curl函數調用是很重要的

百度和網易比較熟悉 所以拿這兩個網站首頁采集來做例子講解


最簡單的寫法:

復制代碼 代碼如下:


$url = 'http://www.baidu.com';
 $ch = curl_init($url);
 curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
 curl_setopt($ch,CURLOPT_TIMEOUT,5);
 $html = curl_exec($ch);
 if($html !== false){
     echo $html;
 }


由于使用頻繁 可以利用curl_setopt_array寫成函數的形式:

復制代碼 代碼如下:


function get_html($url,$options = array()){
     $options[CURLOPT_RETURNTRANSFER] = true;
     $options[CURLOPT_TIMEOUT] = 5;
     $ch = curl_init($url);
     curl_setopt_array($ch,$options);
     $html = curl_exec($ch);
     curl_close($ch);
     if($html === false){
         return false;
     }
     return $html;
 }

復制代碼 代碼如下:


$url = 'http://www.baidu.com';
echo get_html($url);


有時候需要傳遞一些特定的參數才能得到正確的頁面 如現在要得到網易的頁面:

復制代碼 代碼如下:


$url = 'http://www.163.com';
echo get_html($url);


會看到一片空白 什么也沒有 那么再利用curl_getinfo寫一個函數 看看發生了什么:

復制代碼 代碼如下:


function get_info($url,$options = array()){
     $options[CURLOPT_RETURNTRANSFER] = true;
     $options[CURLOPT_TIMEOUT] = 5;
     $ch = curl_init($url);
     curl_setopt_array($ch,$options);
     $html = curl_exec($ch);
     $info = curl_getinfo($ch);
     curl_close($ch);
     return $info;
 }
 $url = 'http://www.163.com';
 var_dump(get_info($url));

如何在curl中使用get_html函數

可以看到http_code 302 重定向了 這時候就需要傳遞一些參數了:

復制代碼 代碼如下:


$url = 'http://www.163.com';
$options[CURLOPT_FOLLOWLOCATION] = true;
echo get_html($url,$options);

如何在curl中使用get_html函數

會發現 怎么是這樣的一個頁面 和我們電腦訪問的不同???

看來參數還是不夠 不夠服務器判斷我們的客戶端是什么設備上的 就返回了個普通版

看來還要傳送USERAGENT

復制代碼 代碼如下:


$url = 'http://www.163.com';
 $options[CURLOPT_FOLLOWLOCATION] = true;
 $options[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 6.1; rv:19.0) Gecko/20100101 Firefox/19.0';
 echo get_html($url,$options);

如何在curl中使用get_html函數

OK現在頁面已經出來了 這樣基本這個get_html函數基本能實現這樣擴展的功能

當然也有另外的辦法可以實現,當你明確的知道網易的網頁的時候就可以簡單采集了:

復制代碼 代碼如下:


 $url = 'http://www.163.com/index.html';
 echo get_html($url);


這樣也可以正常的采集

以上就是如何在curl中使用get_html函數,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節
推薦閱讀:
  1. curl 函數總結
  2. CURL函數

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

子洲县| 深泽县| 特克斯县| 临沭县| 东乡族自治县| 六枝特区| 滕州市| 新建县| 汶川县| 青河县| 晋城| 元阳县| 石台县| 伊春市| 双桥区| 灵寿县| 涟水县| 开封市| 江永县| 石棉县| 武隆县| 余庆县| 石渠县| 田阳县| 长宁县| 冷水江市| 泸溪县| 来安县| 绥芬河市| 屏南县| 凌海市| 乐亭县| 哈密市| 龙川县| 平阳县| 道真| 林芝县| 许昌市| 沙河市| 封开县| 海原县|