欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于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)這樣擴展的功能

當(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不用第三變量交換2個變量的值的解決方法

    PHP不用第三變量交換2個變量的值的解決方法

    本篇文章是對在php中交換兩個變量的值的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php使用自帶dom擴展進(jìn)行元素匹配的原理解析

    php使用自帶dom擴展進(jìn)行元素匹配的原理解析

    這篇文章主要介紹了php使用自帶dom擴展進(jìn)行元素匹配的原理解析,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • 一個PHP并發(fā)訪問實例代碼

    一個PHP并發(fā)訪問實例代碼

    php其實也可以執(zhí)行多任務(wù)或并發(fā)訪問,下面就是網(wǎng)上找來的一個關(guān)于PHP并發(fā)訪問的例子
    2012-09-09
  • phpStudy訪問速度慢和啟動失敗的解決辦法

    phpStudy訪問速度慢和啟動失敗的解決辦法

    這篇文章主要介紹了phpStudy訪問速度慢和啟動失敗的解決辦法的相關(guān)資料,需要的朋友可以參考下
    2015-11-11
  • 淺談php中的訪問修飾符private、protected、public的作用范圍

    淺談php中的訪問修飾符private、protected、public的作用范圍

    下面小編就為大家?guī)硪黄獪\談php中的訪問修飾符private、protected、public的作用范圍。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11
  • 實例介紹PHP的Reflection反射機制

    實例介紹PHP的Reflection反射機制

    這篇文章主要介紹了實例介紹PHP的Reflection反射機制,本文從使用Reflection獲取一個類的信息角度來介紹PHP的Reflection反射機制,需要的朋友可以參考下
    2014-08-08
  • thinkPHP實現(xiàn)的聯(lián)動菜單功能詳解

    thinkPHP實現(xiàn)的聯(lián)動菜單功能詳解

    這篇文章主要介紹了thinkPHP實現(xiàn)的聯(lián)動菜單功能,結(jié)合實例形式分析了thinkPHP聯(lián)動菜單的實現(xiàn)步驟與具體操作技巧,需要的朋友可以參考下
    2017-05-05
  • symfony3.4中根據(jù)角色不同跳轉(zhuǎn)不同頁面功能

    symfony3.4中根據(jù)角色不同跳轉(zhuǎn)不同頁面功能

    這篇文章主要介紹了symfony3.4中根據(jù)角色不同跳轉(zhuǎn)不同頁面,在Symfony?3.4中,可以使用安全組件來實現(xiàn)控制不同角色跳轉(zhuǎn)到不同頁面的功能,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • thinkPHP框架單元測試庫tpunit用法示例

    thinkPHP框架單元測試庫tpunit用法示例

    這篇文章主要介紹了thinkPHP框架單元測試庫tpunit用法,結(jié)合實例形式分析了tpunit簡單使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2018-08-08
  • Laravel框架中自定義模板指令總結(jié)

    Laravel框架中自定義模板指令總結(jié)

    Blade 允許你自定義命令,你可以使用 directive 方法注冊命令。下面這篇文章主要給大家總結(jié)介紹了關(guān)于Laravel框架中自定義模板指令的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧
    2017-12-12

最新評論