PHP簡單爬蟲 基於QueryList採集庫 和 ezsql數據庫操做類

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

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

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

下載地址:sjolzy.cn/php/ezSQL/bak/ez_sql_2.05.zip數據庫

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

db裏放得是ezsql類相關文件服務器

lib裏放得是querylist相關文件框架

index.php 爲主程序ide

 

以採集貓眼電影TOP100爲例代碼以下:學習

index.phpui

<?php
require '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

相關文章
相關標籤/搜索