PHP简单爬虫 基于QueryList采集库 和 ezsql数据库操作类

时间:2023-03-09 00:10:37
PHP简单爬虫 基于QueryList采集库 和 ezsql数据库操作类

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

搭建一个简单的框架目录结构:

PHP简单爬虫 基于QueryList采集库 和 ezsql数据库操作类

db里放得是ezsql类相关文件

lib里放得是querylist相关文件

index.php 为主程序

以采集猫眼电影TOP100为例代码如下:

index.php

<?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=;
for($i=;$i<;$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+=;
echo "弟".($i+)."页完成".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)[]);
}),//产地
'timelen' => array('.movie-brief-container ul li:eq(1)','text','',function($content){
return trim(explode("/", $content)[]);
}),//片长 'addtime' => array('.movie-brief-container ul li:eq(2)','text','',function($content){
return substr($content,,);
}),//上映时间
'addarea' => array('.movie-brief-container ul li:eq(2)','text','',function($content){
return substr($content,);
}),//上映地点 ); $data = QueryList::Query($url,$rules)->data; print_r($data); $name=$data[]["name"];
$ename=$data[]["ename"];
$area=$data[]["area"];
$type=$data[]["type"];
$timelen=$data[]["timelen"];
$addtime=$data[]["addtime"];
$addarea=$data[]["addarea"]; $db->query("INSERT INTO maoyan (name, ename,type,area,timelen,addtime,addarea)
VALUES ('$name','$ename','$area','$type','$timelen','$addtime','$addarea')");
}

采集的结果:

PHP简单爬虫 基于QueryList采集库 和 ezsql数据库操作类

 项目下载:https://files.cnblogs.com/files/wordblog/spider.rar