溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何在curl中使用get_html函數(shù)

發(fā)布時(shí)間:2020-12-23 15:19:54 來源:億速云 閱讀:226 作者:Leah 欄目:開發(fā)技術(shù)

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

大致大綱:

1.curl數(shù)據(jù)采集系列之單頁面采集函數(shù)get_html

2.curl數(shù)據(jù)采集系列之多頁面并行采集函數(shù)get_htmls

3.curl數(shù)據(jù)采集系列之正則處理函數(shù)get _matches

4.curl數(shù)據(jù)采集系列之代碼分離

5.curl數(shù)據(jù)采集系列之并行邏輯控制函數(shù)web_spider


單頁面采集在數(shù)據(jù)采集過程中是最常用的一個(gè)功能 有時(shí)在服務(wù)器訪問限制的情況下 只能使用這種采集方式 慢 但是可以簡(jiǎn)單的控制 所以寫好一個(gè)常用的curl函數(shù)調(diào)用是很重要的

百度和網(wǎng)易比較熟悉 所以拿這兩個(gè)網(wǎng)站首頁采集來做例子講解


最簡(jiǎn)單的寫法:

復(fù)制代碼 代碼如下:


$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寫成函數(shù)的形式:

復(fù)制代碼 代碼如下:


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;
 }

復(fù)制代碼 代碼如下:


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


有時(shí)候需要傳遞一些特定的參數(shù)才能得到正確的頁面 如現(xiàn)在要得到網(wǎng)易的頁面:

復(fù)制代碼 代碼如下:


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


會(huì)看到一片空白 什么也沒有 那么再利用curl_getinfo寫一個(gè)函數(shù) 看看發(fā)生了什么:

復(fù)制代碼 代碼如下:


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函數(shù)

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

復(fù)制代碼 代碼如下:


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

如何在curl中使用get_html函數(shù)

會(huì)發(fā)現(xiàn) 怎么是這樣的一個(gè)頁面 和我們電腦訪問的不同???

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

看來還要傳送USERAGENT

復(fù)制代碼 代碼如下:


$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函數(shù)

OK現(xiàn)在頁面已經(jīng)出來了 這樣基本這個(gè)get_html函數(shù)基本能實(shí)現(xiàn)這樣擴(kuò)展的功能

當(dāng)然也有另外的辦法可以實(shí)現(xiàn),當(dāng)你明確的知道網(wǎng)易的網(wǎng)頁的時(shí)候就可以簡(jiǎn)單采集了:

復(fù)制代碼 代碼如下:


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


這樣也可以正常的采集

以上就是如何在curl中使用get_html函數(shù),小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI