PHP簡單爬蟲 基於QueryList採集庫 和 ezsql資料庫操作類

來源:互聯網
上載者:User

標籤:type   brief   query   code   PQ   replace   開發   2.0   alt   

QueryList是一個基於phpQuery的PHP通用列表採集類,得益於phpQuery,讓使用QueryList幾乎沒有任何學習成本,只要會CSS3選取器就可以便於使用QueryList了,它讓PHP做採集像jQuery選擇元素一樣簡單。

官方地址:https://querylist.cc/

ezSQL PHP 是用php開發的一套輕量級的資料庫類,這個資料庫類佔用伺服器資源小,代碼簡潔,同時支援多種資料庫的使用,安全性高。

:sjolzy.cn/php/ezSQL/bak/ez_sql_2.05.zip

搭建一個簡單的架構目錄結構:

db裡放得是ezsql類相關檔案

lib裡放得是querylist相關檔案

index.php 為主程式

 

以採集貓眼電影TOP100為例代碼如下:

index.php

<?phprequire ‘lib/phpQuery.php‘;require ‘lib/QueryList.php‘;require "db/shared/ez_sql_core.php";  require "db/mysql/ez_sql_mysql.php";  use QL\QueryList;//抓取貓眼電影TOP100榜單內容 $db = new ezSQL_mysql(‘root‘, ‘root‘, ‘spider‘, ‘localhost‘);  $offset=0;for($i=0;$i<10;$i++){    $gurl="http://maoyan.com/board/4?offset=".$offset;    // echo $gurl.PHP_EOL;    $rules = array(        //採集id為one這個元素裡面的純文字內容        ‘url‘ => array(‘.movie-item-info .name a‘,‘href‘,‘‘,function($content){            return ‘http://maoyan.com‘.$content;        }),//連結    );    $data = QueryList::Query($gurl,$rules)->data;    // print_r($data);    foreach ($data as $key => $val) {        getContents($db,$val[‘url‘]);    }    $offset+=10;    echo "弟".($i+1)."頁完成".PHP_EOL;}//取電影內容 傳入內容頁的連結地址 function getContents($db,$url){    $rules = array(        //採集id為one這個元素裡面的純文字內容        ‘name‘ => array(‘.movie-brief-container .name‘,‘text‘),//電影名        ‘ename‘ => array(‘.movie-brief-container .ename‘,‘text‘,‘‘,function($content){            return str_replace("‘","\‘",$content);        }),//英文名         ‘type‘ => array(‘.movie-brief-container ul li:eq(0)‘,‘text‘),//電影類型        ‘area‘ => array(‘.movie-brief-container ul li:eq(1)‘,‘text‘,‘‘,function($content){            return trim(explode("/", $content)[0]);        }),//產地        ‘timelen‘ => array(‘.movie-brief-container ul li:eq(1)‘,‘text‘,‘‘,function($content){            return trim(explode("/", $content)[1]);        }),//片長             ‘addtime‘ => array(‘.movie-brief-container ul li:eq(2)‘,‘text‘,‘‘,function($content){            return substr($content,0,10);        }),//發行日期        ‘addarea‘ => array(‘.movie-brief-container ul li:eq(2)‘,‘text‘,‘‘,function($content){            return substr($content,10);        }),//上映地點    );    $data = QueryList::Query($url,$rules)->data;    print_r($data);    $name=$data[0]["name"];    $ename=$data[0]["ename"];    $area=$data[0]["area"];    $type=$data[0]["type"];    $timelen=$data[0]["timelen"];    $addtime=$data[0]["addtime"];    $addarea=$data[0]["addarea"];    $db->query("INSERT INTO maoyan (name, ename,type,area,timelen,addtime,addarea)         VALUES (‘$name‘,‘$ename‘,‘$area‘,‘$type‘,‘$timelen‘,‘$addtime‘,‘$addarea‘)");}

 

 採集的結果:

 項目下載:https://files.cnblogs.com/files/wordblog/spider.rar

PHP簡單爬蟲 基於QueryList採集庫 和 ezsql資料庫操作類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.