<delect id="sj01t"></delect>
  1. <em id="sj01t"><label id="sj01t"></label></em>
  2. <div id="sj01t"></div>
    1. <em id="sj01t"></em>

            <div id="sj01t"></div>
            php語言

            基于PHPQuery的PHP通用采集類

            時間:2025-03-07 03:53:23 php語言 我要投稿
            • 相關推薦

            基于PHPQuery的PHP通用采集類

              鳥欲高飛先振翅,人求上進先讀書。以下是小編為大家搜索整理的基于PHPQuery的PHP通用采集類,希望能給大家帶來幫助!更多精彩內容請及時關注我們應屆畢業生考試網!

              一、采集類源碼

              代碼如下:

              /**

              *通用列表采集類

              *版本V1.3

              *作者:JAE

              */

              require_once '../phpQuery/phpQuery/phpQuery.php';

              class QueryList{

              private $pageURL;

              private $regArr = array();

              public $jsonArr = array();

              private $regRange;

              private $html;

              /************************************************

              * 參數: 頁面地址 選擇器數組 塊選擇器

              * 【選擇器數組】說明:格式array("名稱"=>array("選擇器","類型"),.......)

              * 【類型】說明:值 "text" ,"html" ,"屬性"

              *【塊選擇器】:指 先按照規則 選出 幾個大塊 ,然后再分別再在塊里面 進行相關的選擇

              *************************************************/

              function QueryList($pageURL,$regArr=array(),$regRange='')

              {

              $this->pageURL = $pageURL;

              //為了能獲取https://

              $ch = curl_init();

              curl_setopt($ch, CURLOPT_URL,$this->pageURL);

              curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

              curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

              curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

              $this->html = curl_exec($ch);

              curl_close($ch);

              if(!empty($regArr))

              {

              $this->regArr = $regArr;

              $this->regRange = $regRange;

              $this->getList();

              }

              }

              function setQuery($regArr,$regRange='')

              {

              $this->jsonArr=array();

              $this->regArr = $regArr;

              $this->regRange = $regRange;

              $this->getList();

              }

              private function getList()

              {

              $hobj = phpQuery::newDocumentHTML($this->html);

              if(!empty($this->regRange))

              {

              $robj = pq($hobj)->find($this->regRange);

              $i=0;

              foreach($robj as $item)

              {

              while(list($key,$reg_value)=each($this->regArr))

              {

              $iobj = pq($item)->find($reg_value[0]);

              switch($reg_value[1])

              {

              case 'text':

              $this->jsonArr[$i][$key] = trim(pq($iobj)->text());

              break;

              case 'html':

              $this->jsonArr[$i][$key] = trim(pq($iobj)->html());

              break;

              default:

              $this->jsonArr[$i][$key] = pq($iobj)->attr($reg_value[1]);

              break;

              }

              }

              //重置數組指針

              reset($this->regArr);

              $i++;

              }

              }

              else

              {

              while(list($key,$reg_value)=each($this->regArr))

              {

              $lobj = pq($hobj)->find($reg_value[0]);

              $i=0;

              foreach($lobj as $item)

              {

              switch($reg_value[1])

              {

              case 'text':

              $this->jsonArr[$i++][$key] = trim(pq($item)->text());

              break;

              case 'html':

              $this->jsonArr[$i++][$key] = trim(pq($item)->html());

              break;

              default:

              $this->jsonArr[$i++][$key] = pq($item)->attr($reg_value[1]);

              break;

              }

              }

              }

              }

              }

              function getJSON()

              {

              return json_encode($this->jsonArr);

              }

              }

              二、使用例子

              代碼如下:

              require 'Query/QueryList.class.php';

              //采集OSC的代碼分享列表,標題 鏈接 作者

              $url = "http://www.oschina.net/code/list";

              $reg = array("title"=>array(".code_title a:eq(0)","text"),"url"=>array(".code_title a:eq(0)","href"),"author"=>array("img","title"));

              $rang = ".code_list li";

              $hj = new QueryList($url,$reg,$rang);

              $arr = $hj->jsonArr;

              print_r($arr);

              //如果還想采當前頁面右邊的 TOP40活躍貢獻者 圖像,得到JSON數據,可以這樣寫

              $reg = array("portrait"=>array(".hot_top img","src"));

              $hj->setQuery($reg);

              $json = $hj->getJSON();

              echo $json . "

              ";

              //采OSC內容頁內容

              $url = "http://www.oschina.net/code/snippet_186288_23816";

              $reg = array("title"=>array(".QTitle h1","text"),"con"=>array(".Content","html"));

              $hj = new QueryList($url,$reg);

              $arr = $hj->jsonArr;

              print_r($arr);

            【基于PHPQuery的PHP通用采集類】相關文章:

            PHP學習:PHP拼音類10-08

            基于Web信息采集技術研究10-16

            基于php下載文件的詳解10-26

            基于PHP中的常用函數精粹07-19

            PHP可以靈活配置使用的采集器11-05

            構建基于PHP的微博客服務08-17

            php分頁類代碼09-08

            PHP類與構造函數07-01

            php采集文章中的圖片獲取替換到本地實例09-13

            <delect id="sj01t"></delect>
            1. <em id="sj01t"><label id="sj01t"></label></em>
            2. <div id="sj01t"></div>
              1. <em id="sj01t"></em>

                      <div id="sj01t"></div>
                      黄色视频在线观看