最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于curl數(shù)據(jù)采集之單頁面采集函數(shù)get_html的使用

 更新時間:2013年04月28日 17:06:58   作者:  
在做數(shù)據(jù)采集時經(jīng)常要使用到curl+正則的方式采集需要的數(shù)據(jù) 根據(jù)自己的工作經(jīng)驗 把自己寫的一些常用自定義函數(shù) 與大家來分享 如果有寫得不恰當(dāng)?shù)牡胤?請多多指教

這是一個系列 沒辦法在一兩天寫完 所以一篇一篇的發(fā)布

大致大綱:

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ù)采集過程中是最常用的一個功能 有時在服務(wù)器訪問限制的情況下 只能使用這種采集方式 慢 但是可以簡單的控制 所以寫好一個常用的curl函數(shù)調(diào)用是很重要的

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


最簡單的寫法:

復(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ù)才能得到正確的頁面 如現(xiàn)在要得到網(wǎng)易的頁面:
復(fù)制代碼 代碼如下:

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

會看到一片空白 什么也沒有 那么再利用curl_getinfo寫一個函數(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));

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

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

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

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

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

看來還要傳送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);

 

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

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

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

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

這樣也可以正常的采集

相關(guān)文章

  • PHP實現(xiàn)隨機(jī)數(shù)字、字母的驗證碼功能

    PHP實現(xiàn)隨機(jī)數(shù)字、字母的驗證碼功能

    本文通過實例代碼給大家介紹了PHP實現(xiàn)隨機(jī)數(shù)字、字母的驗證碼功能,代碼簡單易懂,非常不錯,具有一定得參考借鑒價值,需要得朋友參考下吧
    2018-08-08
  • Laravel中10個有用的用法小結(jié)

    Laravel中10個有用的用法小結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于Laravel中10個有用的用法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Laravel具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • PHP實現(xiàn)的多彩標(biāo)簽效果代碼分享

    PHP實現(xiàn)的多彩標(biāo)簽效果代碼分享

    這篇文章主要介紹了PHP實現(xiàn)的多彩標(biāo)簽效果代碼分享,經(jīng)??梢钥吹揭恍┎┛椭械臉?biāo)簽(TAGS)頁面是彩色的效果展現(xiàn),本文就給出了實現(xiàn)這個功能的PHP代碼,需要的朋友可以參考下
    2014-08-08
  • Yii中CGridView禁止列排序的設(shè)置方法

    Yii中CGridView禁止列排序的設(shè)置方法

    這篇文章主要介紹了Yii中CGridView禁止列排序的設(shè)置方法,講述了CGridView的功能及通過數(shù)組項sortable設(shè)置實現(xiàn)禁止排列功能的方法,需要的朋友可以參考下
    2016-07-07
  • PHP中使用ElasticSearch最新實例講解

    PHP中使用ElasticSearch最新實例講解

    這篇文章主要介紹了PHP中使用ElasticSearch最新實例講解,這篇文章的教程是比較詳細(xì),有需要的同學(xué)可以研究下
    2021-03-03
  • 如何判斷php mysqli擴(kuò)展類是否開啟

    如何判斷php mysqli擴(kuò)展類是否開啟

    php高級版本都支持mysqli擴(kuò)展類,但是默認(rèn)情況下,mysqli擴(kuò)展類是沒有開啟的,本文章向大家介紹php如何判斷mysqli擴(kuò)展類是否開啟,需要的朋友可以參考一下
    2016-12-12
  • 基于PHP常用函數(shù)的用法詳解

    基于PHP常用函數(shù)的用法詳解

    本篇文章對PHP中的一些常用函數(shù)的用法進(jìn)行了詳細(xì)的分析介紹。需要的朋友參考下
    2013-05-05
  • 利用PHP?POST臨時文件機(jī)制實現(xiàn)任意文件上傳的方法詳解

    利用PHP?POST臨時文件機(jī)制實現(xiàn)任意文件上傳的方法詳解

    這篇文章主要介紹了利用?PHP?POST?臨時文件機(jī)制實現(xiàn)任意文件上傳,同時該過程也會打斷 php 對臨時文件的處理,雖然最終仍會被刪除,但相較之前可以明顯看出臨時文件在磁盤的中存在的時間變長了,需要的朋友可以參考下
    2022-04-04
  • Laravel認(rèn)證原理以及完全自定義認(rèn)證詳解

    Laravel認(rèn)證原理以及完全自定義認(rèn)證詳解

    最近在學(xué)習(xí)laravel框架,所以下面這篇文章主要給大家介紹了關(guān)于Laravel認(rèn)證原理以及完全自定義認(rèn)證的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • zend framework文件上傳功能實例代碼

    zend framework文件上傳功能實例代碼

    zend framework文件上傳功能實例代碼,php的版本5.3.8,zend framework的版本1.12,看下面的代碼吧,有注釋
    2013-12-12

最新評論

太仆寺旗| 离岛区| 阿坝县| 东山县| 海城市| 当阳市| 灌阳县| 札达县| 天峻县| 梓潼县| 阿拉善左旗| 商洛市| 北安市| 宽城| 瑞安市| 咸阳市| 饶河县| 郎溪县| 兴城市| 哈巴河县| 雅江县| 南部县| 大石桥市| 河南省| 图们市| 紫金县| 鄂伦春自治旗| 西城区| 宣恩县| 夏津县| 中西区| 泗洪县| 安陆市| 莎车县| 商洛市| 报价| 南城县| 定日县| 饶阳县| 遵化市| 枣阳市|