<address id="ousso"></address>
<form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
  1. 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

    <address id="ousso"></address>
    <form id="ousso"><track id="ousso"><big id="ousso"></big></track></form>
    1. 日日做夜狠狠爱欧美黑人