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

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

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

這是一個(gè)系列 沒(méi)辦法在一兩天寫(xiě)完 所以一篇一篇的發(fā)布

大致大綱:

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

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

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

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

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


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

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


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

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

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

會(huì)看到一片空白 什么也沒(méi)有 那么再利用curl_getinfo寫(xiě)一個(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));

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

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

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

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

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

看來(lái)還要傳送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)在頁(yè)面已經(jīng)出來(lái)了 這樣基本這個(gè)get_html函數(shù)基本能實(shí)現(xiàn)這樣擴(kuò)展的功能

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

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

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

這樣也可以正常的采集

相關(guān)文章

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

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

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

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

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

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

    這篇文章主要介紹了PHP實(shí)現(xiàn)的多彩標(biāo)簽效果代碼分享,經(jīng)常可以看到一些博客中的標(biāo)簽(TAGS)頁(yè)面是彩色的效果展現(xiàn),本文就給出了實(shí)現(xiàn)這個(gè)功能的PHP代碼,需要的朋友可以參考下
    2014-08-08
  • Yii中CGridView禁止列排序的設(shè)置方法

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

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

    PHP中使用ElasticSearch最新實(shí)例講解

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

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

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

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

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

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

    這篇文章主要介紹了利用?PHP?POST?臨時(shí)文件機(jī)制實(shí)現(xiàn)任意文件上傳,同時(shí)該過(guò)程也會(huì)打斷 php 對(duì)臨時(shí)文件的處理,雖然最終仍會(huì)被刪除,但相較之前可以明顯看出臨時(shí)文件在磁盤(pán)的中存在的時(shí)間變長(zhǎng)了,需要的朋友可以參考下
    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)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-07-07
  • zend framework文件上傳功能實(shí)例代碼

    zend framework文件上傳功能實(shí)例代碼

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

最新評(píng)論

兴山县| 仁布县| 老河口市| 昌宁县| 嘉祥县| 东城区| 田林县| 杨浦区| 上栗县| 新营市| 巴楚县| 通榆县| 绿春县| 土默特右旗| 札达县| 台前县| 金沙县| 贵定县| 甘德县| 武城县| 彰化县| 浦城县| 扬中市| 喀喇沁旗| 黎城县| 庆元县| 云龙县| 封丘县| 西乌珠穆沁旗| 奈曼旗| 靖安县| 虎林市| 太白县| 西乌珠穆沁旗| 茶陵县| 乌兰察布市| 搜索| 邹平县| 揭东县| 宿迁市| 缙云县|