亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > PHP > 正文

PHP爬蟲技術(一)

2020-03-22 19:44:36
字體:
來源:轉載
供稿:網友
  • 摘要:本篇文章介紹PHP抓取網頁內容技術,利用PHPcURL擴展獲取網頁內容,還可以抓取網頁頭部,設置cookie,處理302跳轉。

    一、cURL安裝

    采用源碼安裝PHP時,需要在configure時添加配置項,

    cdphp

    ./configure--with-curl

    安裝完畢,可以利用php-m命令查看,是否已經支持cURL擴展。

    php-m|grepcurl

    也可以利用phpinfo查看,是否已經支持cURL擴展。

    二、獲取網頁內容

    cURL支持很多網絡協議,如HTTP、HTTPS、FTP等。普通網頁采用HTTP協議,一些安全性高的網頁采用HTTPS(HTTPS協議采用數據加密技術,通過公鑰技術交換密鑰,加密傳輸內容。因此采用HTTPS協議的網頁,在整個鏈路上傳輸的都是加密后的數據。例如Baidu采用HTTPS協議,你輸入的關鍵字被網絡傳輸協議加密,即使是運營商可以獲得全部數據,也無法獲得數據的內容。HTTPS協議也有缺點,就是加解密需要耗費計算時間,因此HTTPS網站會慢一些,而大多數網站都是采用HTTP協議)。HTTP協議中,定義了兩種方法GET和Z喎?http://www.it165.net/pro/pkqt/" target="_blank" html' target='_blank'>class="keylink">QT1NUoaNQT1NUt723qM2os6PTw9Pase21pczhvbujrMTcubvM4b27zsS8/rXItPPK/b7doaNHRVS3vbeo08PAtLvxyKHN+NKzyv2+3aOs0rK/ydLUzOG9u8nZwb/K/b7doaOxvs7E1vfSqr3pydzA+9PDR0VU0K3S6bvxyKHN+NKzyv2+3aOsvavAtNTZz+rPuL2yveJjVVJMJm5ic3A7UE9TVLy8yvWhozwvcD4KPHA+ztLDx8/Iv7TSu9Cp5K/AwMb3ysfU9cO0uaTX97XEo6y08r+qY2hyb21l5K/AwMb3o6xGMTK9+Mjrv6q3otXfxKPKvaOsvau5pL7fwLjH0Lu7tb1uZXR3b3Jro6zI58/CzbyjrMD708NjaHJvbWW5pL7fv8nS1LLpv7TDv7j2zsS8/rXEtKvK5NDFz6KhozwvcD4KPHA+PGltZyBzcmM9"http://www.it165.net/uploadfile/files/2015/0605/20150605193650340.png" alt="" width="842" height="577" />

    瀏覽器要加載一個網頁,首先下載html文件,再下載js、css、圖片等資源文件再進行渲染加載。通常數據抓取只需要抓取html文件,下圖是chrome工具顯示下載http文件的內容。

    三、PHP實現

    <?php$ch = curl_init();curl_setopt($ch, CURLOPT_URL, "www.qq.com");curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);$html = curl_exec($ch);curl_close($ch);var_dump($html);?>

    基本設置,返回網頁內容。

    四、獲得HTTP頭部設置cookie

    有些網站,會采用cookie技術。當采集程序沒帶有相關cookie時,很容易被網站認定是“機器人”,拒絕對其服務。通過chrome調試www.sogou.com,發現cookie是包含在網頁頭信息中的。因此,我們需要兩個步驟(1)HTTP頭信息中獲取cookie(2)發送請求時添加cookie。

    頭信息包含設置cookie,

    刷新網頁,查看頭信息,請求包含cookie信息

    獲取cookie

    <?php    $url = "www.sogou.com";    $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_NOBODY, true);    curl_setopt($ch, CURLOPT_HEADERFUNCTION, function ($ch, $str) use(&$setcookie) {      // 第一個參數是curl資源,第二個參數是每一行獨立的header!      list ($name, $value) = array_map('trim', explode(':', $str, 2));      $name = strtolower($name);      if('set-cookie'==$name)      {        $setcookie[]=$value;      }      return strlen($str);    });    curl_exec($ch);    curl_close($ch);    $cookie = array();    foreach($setcookie as $c)    {      $tmp = explode(";",$c);      $cookie[] = $tmp[0];    }    $cookiestr = "Cookie:".implode(";", $cookie);    echo $cookiestr;?>

    返回結果

    Cookie:ABTEST=0|1433425917|v17;IPLOC=CN1100;SUID=3295CB6F1220920A00000000557057FD

    設置cookie

    <?php$url = "www.sogou.com";$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);$headers[] = $cookie;curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);$html = curl_exec($ch);curl_close($ch);var_dump($html);?>

    五、抓取302跳轉

    在Baidu中搜索關鍵詞,返回的結果鏈接是一個Baidu加密過的鏈接,通過二次跳轉才是真正的網址。(Baidu為了防止360抓取,把結果都加密了)。

    我們可以抓取頭部中的location信息找到真實地址,

    <?php    $url = "https://www.baidu.com/link?url=b34APzBjz-cGLoxsG4-nviHmtVS0tCvEftS6ApCAsojT1a0h9oFFPprwK4JpNYgGaQE29QPUtRdPUeu3lIz2M7GW7dqLMi5ytlHLOVa3v_VY23dOoRiUSyV9zr_cI8Rg&wd=&eqid=c89cf372000002cc0000000255705961&ie=utf-8";    $ch = curl_init();    curl_setopt($ch, CURLOPT_URL, $url);    curl_setopt($ch, CURLOPT_NOBODY, true);    curl_setopt($ch, CURLOPT_HEADERFUNCTION, function ($ch, $str) use(&$location) {      // 第一個參數是curl資源,第二個參數是每一行獨立的header!        list ($name, $value) = array_map('trim', explode(':', $str, 2));        $name = strtolower($name);        if('location'==$name)        {          $location = $value;          return 0;        }        return strlen($str);    });    curl_exec($ch);    curl_close($ch);    echo $location;?>

    抓取302跳轉還有另外一種方式,利用ob重定向流的方式,并且設置允許curl跳轉到新地址。代碼如下

    <?php      function getContents($url){       $header = array("Referer: http://www.baidu.com/");       $ch = curl_init();       curl_setopt($ch, CURLOPT_URL, $url);       curl_setopt($ch, CURLOPT_TIMEOUT, 30);       curl_setopt($ch, CURLOPT_HTTPHEADER,$header);       curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);  //能無法 抓取跳轉后的頁面      ob_start();       curl_exec($ch);       $contents = ob_get_contents();       ob_end_clean();       curl_close($ch);       return $contents;       }       $url = "https://www.baidu.com/link?url=b34APzBjz-cGLoxsG4-nviHmtVS0tCvEftS6ApCAsojT1a0h9oFFPprwK4JpNYgGaQE29QPUtRdPUeu3lIz2M7GW7dqLMi5ytlHLOVa3v_VY23dOoRiUSyV9zr_cI8Rg&amp;wd=&amp;eqid=c89cf372000002cc0000000255705961&amp;ie=utf-8";      $contents = getContents($url);      echo $contents; ?>
    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    亚洲欧美国内爽妇网| 91精品视频大全| 欧美成人免费全部观看天天性色| 国产日韩中文在线| 伊人久久大香线蕉av一区二区| 欧美精品性视频| 91精品免费久久久久久久久| 亚洲黄页网在线观看| 国产精品视频久久| 精品久久久香蕉免费精品视频| 日韩亚洲欧美成人| 欧美亚洲在线播放| 国产精品99久久久久久白浆小说| 国产网站欧美日韩免费精品在线观看| 国产日本欧美一区二区三区在线| 日本sm极度另类视频| 久久99国产精品自在自在app| 亚洲精品电影网在线观看| 国产精品久久久久9999| 国产成人av在线播放| 久热精品在线视频| 欧美性高跟鞋xxxxhd| 国产精品一区二区三区免费视频| 亚洲一区二区久久久| 日韩美女av在线免费观看| 91网站免费看| 日韩最新免费不卡| 欧美激情国产高清| 国产精品丝袜视频| 日韩动漫免费观看电视剧高清| 久久久久免费精品国产| 欧美特黄级在线| 俺也去精品视频在线观看| 国产国语videosex另类| 亚洲视频日韩精品| 中文字幕精品www乱入免费视频| 成人黄色短视频在线观看| 色七七影院综合| 久久五月天综合| 日韩欧美成人免费视频| 色爱av美腿丝袜综合粉嫩av| 在线电影av不卡网址| 国产999精品久久久影片官网| 欧美又大又粗又长| 亚洲自拍偷拍视频| 国内精品一区二区三区四区| 亚洲国产成人精品女人久久久| 裸体女人亚洲精品一区| 欧美性生交大片免费| 久久精品国产一区二区电影| 一本色道久久88综合日韩精品| 欧美日本亚洲视频| 日韩欧美一区视频| 精品视频久久久久久久| 日韩大胆人体377p| 亚洲香蕉伊综合在人在线视看| 亚洲区一区二区| 亚洲国产精品久久久久久| 欧美高清在线视频观看不卡| 欧美午夜激情视频| 精品女同一区二区三区在线播放| 日本亚洲精品在线观看| 亚洲精品aⅴ中文字幕乱码| 国产视频精品自拍| 亚洲人成网7777777国产| 91精品国产色综合久久不卡98口| 国产日韩精品视频| 中日韩美女免费视频网站在线观看| 欧美亚洲另类制服自拍| 久久久国产精品x99av| 97精品视频在线播放| 久久综合久久八八| 欧美夫妻性生活视频| 欧美国产日韩一区二区三区| 日韩av在线导航| 国产精品久久久久久久app| 亚洲欧洲日产国码av系列天堂| 97欧美精品一区二区三区| 精品香蕉一区二区三区| 91久久久久久久久| 国产一区二区三区日韩欧美| 91亚洲精品一区二区| 亚洲男人av电影| 日本一本a高清免费不卡| 国产成人精品网站| 日韩美女主播视频| 超碰日本道色综合久久综合| 色婷婷综合久久久久中文字幕1| 91精品综合久久久久久五月天| 亚洲欧美综合另类中字| 久久精品中文字幕一区| 69**夜色精品国产69乱| 欧美午夜视频一区二区| 神马久久桃色视频| 亚洲成色777777在线观看影院| 成人亚洲综合色就1024| 亚洲人成自拍网站| 中文字幕在线亚洲| 91免费视频国产| 欧洲精品毛片网站| 亚洲qvod图片区电影| 在线观看亚洲视频| 国产精品电影网站| 亚洲国产欧美久久| 欧美日韩在线视频观看| 国产精品扒开腿做| 亚洲电影免费观看高清完整版在线| 欧美高清不卡在线| 久久网福利资源网站| 国产精品女主播| 国产丝袜视频一区| 日本国产精品视频| 国产在线98福利播放视频| 久久久久久久久综合| 国产一区二区日韩| 国产精品一区久久久| 国产精品久久久久久久久久东京| 中文字幕欧美精品日韩中文字幕| 亚洲欧美日韩精品久久亚洲区| 亚洲一区二区久久久久久久| 日韩高清av一区二区三区| 欧美最顶级的aⅴ艳星| 午夜精品福利电影| 亚洲国产另类 国产精品国产免费| 久久久久久亚洲精品| 亚洲精品国偷自产在线99热| 亚洲无亚洲人成网站77777| 亚洲电影免费观看高清完整版在线| 欧美亚洲午夜视频在线观看| 国产97在线视频| 日本午夜人人精品| 欧美精品激情在线| 国产美女高潮久久白浆| 亚洲精品www久久久久久广东| 国产欧美一区二区三区在线| 日韩在线激情视频| 日韩欧美在线一区| 国产亚洲在线播放| 久久久噜噜噜久久久| 久久久久久久国产精品视频| 国产在线a不卡| 97久久久久久| 久久久天堂国产精品女人| 久久夜色精品国产亚洲aⅴ| 欧美洲成人男女午夜视频| 日韩在线一区二区三区免费视频| 日韩av免费在线| 97人人模人人爽人人喊中文字| 欧美电影在线免费观看网站| 国产aⅴ夜夜欢一区二区三区| 亚州av一区二区| 久久久中文字幕| 日本三级久久久| 精品久久久91| 久久久亚洲影院你懂的| 一区二区成人av| 91久久国产婷婷一区二区| 亚洲国产精品专区久久| 成人福利视频在线观看| 精品网站999www| 久久精品久久久久| 久久99久久久久久久噜噜| 日韩欧美有码在线| 国产精品视频xxx|