一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - 基于curl數據采集之單頁面采集函數get_html的使用

基于curl數據采集之單頁面采集函數get_html的使用

2020-03-22 13:28PHP教程網 PHP教程

在做數據采集時經常要使用到curl+正則的方式采集需要的數據 根據自己的工作經驗 把自己寫的一些常用自定義函數 與大家來分享 如果有寫得不恰當的地方 請多多指教

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

大致大綱:

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


這樣也可以正常的采集

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品毛片va一区二区三区 | 四虎影免看黄 | 极品在线 | 毛片在线免费观看网站 | 青草午夜精品视频在线观看 | 女人狂吮男人命根gif视频 | kkkk4444在线看片免费 | 亚洲 欧美 国产 综合首页 | 亚洲va精品中文字幕 | 女主被男主做哭失禁高h | 99热精品久久 | 国产成人精品午夜在线播放 | 青青青草免费 | 草莓视频看污 | 91在线永久 | 美女牲交毛片一级视频 | 无人区尖叫之夜美女姐姐视频 | 2019天天干天天操 | 国产免费看视频 | 偷偷狠狠的日日高清完整视频 | 国产成人精品一区二区不卡 | 国产在线观看人成激情视频 | 成人亚洲精品一区 | 国产高清在线视频一区二区三区 | 好男人在线观看hd中字 | 91亚洲精品第一综合不卡播放 | 欧美video丝袜连裤袜bd | 国产无限免费观看黄网站 | 调教扩张宫颈女人惨叫 | 天天干夜夜玩 | 日本老妇乱子伦中文视频 | 极品丝袜小说全集 | 国产成人免费在线视频 | 男人搡女人视频免费看 | 国产精选之刘婷野战 | 日本一区视频 | 精品第一国产综合精品蜜芽 | 久久精品麻豆国产天美传媒果冻 | 久99视频精品免费观看福利 | 日本护士撒尿xxxx欧美 | 三星w699|