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
<?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
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP简单爬虫 基于QueryList采集库 和 ezsql数据库操作类 - Python技术站