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
搭建一个简单的框架目录结构:
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')");
}
采集的结果:
项目下载:https://files.cnblogs.com/files/wordblog/spider.rar
PHP简单爬虫 基于QueryList采集库 和 ezsql数据库操作类的更多相关文章
- 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~
最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...
- 一个基于PDO的数据库操作类(新) 一个PDO事务实例
<?php /* * 作者:胡睿 * 日期:2011/03/19 * 电邮:hooray0905@foxmail.com * * 20110319 * 常用数据库操作,如:增删改查,获取单条记录 ...
- 一个简单的基于 DirectShow 的播放器 2(对话框类)
上篇文章分析了一个封装DirectShow各种接口的封装类(CDXGraph):一个简单的基于 DirectShow 的播放器 1(封装类) 本文继续上篇文章,分析一下调用这个封装类(CDXGrap ...
- 简单的php数据库操作类代码(增,删,改,查)
这几天准备重新学习,梳理一下知识体系,同时按照功能模块划分做一些东西.所以.mysql的操作成为第一个要点.我写了一个简单的mysql操作类,实现数据的简单的增删改查功能. 数据库操纵基本流程为: 1 ...
- 一个基于ASP.NET(C#)的ACCESS数据库操作类
using System; using System.Collections; using System.Collections.Specialized; using System.Data; usi ...
- mysql数据库基于linux的安装步骤及数据库操作
一.数据库安装 Ubuntu上安装MySQL非常简单只需要几条命令就可以完成. sudo apt-get install mysql-server sudo apt-get isntall mysql ...
- 基于Confluent.Kafka实现的Kafka客户端操作类使用详解
一.引言 有段时间没有写东西了,当然不是没得写,还有MongoDB的系列没有写完呢,那个系列还要继续.今天正好是周末,有点时间,来写新东西吧.最近公司用了Kafka做为消息的中间件,最开始写的那个版本 ...
- 人生苦短_我用Python_pymysql库对Mysql数据库操作_009
# coding=utf-8 import pymysql ''' 数据库的登录信息: config={ 'host':'118.126.108.xxx', # :主机 'user':'python' ...
- C#利用反射+特性实现简单的实体映射数据库操作类
附上源代码: using System; using System.Collections.Generic; using System.Data; using System.Linq; using S ...
随机推荐
- uva 1513(线段树)
题目链接:1513 - Movie collection 题意:有一堆电影,按1-n顺序排,有m次操作,每次询问第ai个电影之前有多少个电影,然后将其抽出放在堆顶. 分析:线段树应用. 因为每次查询后 ...
- Python Web开发之Flask
PythonWEB框架之Flask 前言: Django:1个重武器,包含了web开发中常用的功能.组件的框架:(ORM.Session.Form.Admin.分页.中间件.信号.缓存.ContenT ...
- sublimeText3的一些操作记录
# 给绿色版的sublimeText3添加右键菜单,其中@=“Sublime Text 3” 是右键展示的文字, 后面的icon是图标将下面代码保存为.reg文件执行 Windows Registry ...
- iOS 扩展类方法之category!
一.category介绍 category可以不修改源代码的基础上扩展新的方法,Category只能用于方法,不能用于成员变量. 二.category创建 Example:我们扩展NSString类新 ...
- ldap禁止匿名用户登录
此处默认ldap已经安装完成,安装文档传送门:https://www.cnblogs.com/crysmile/p/9470508.html openldap默认安装完成,是允许匿名用户登录的,因此需 ...
- matplotlib + pandas绘图
利用pandas处理日期数据,并根据日期绘制增长率曲线. 处理的json文本内容如下: # pd.json [{"name": "A", "date& ...
- [洛谷P5216]DLS 采花
题目大意:有$n$个数,任意排列,排列后第$i$个数会产生贡献当且仅当$1\sim i-1$中的数不是它的因子,问所有排列的贡献和 题解:发现一个数要产生贡献要求所有它的因子在它的右边,设有$cnt_ ...
- Letter Combinations of a Phone Number - LeetCode
目录 题目链接 注意点 解法 小结 题目链接 Letter Combinations of a Phone Number - LeetCode 注意点 可以不用按字典序排序 解法 解法一:输入的数字逐 ...
- 【BZOJ1502】【NOI2005】月下柠檬树
Portal 传送门 Solution 显然的是,每一个圆的影子,就是从树上的圆按光线方向平移至地面的圆.至于两个圆之间的连接部分,则是每两个在树上相邻的圆的,对应的影子圆的,公切线围起来的部分,如下 ...
- INSTALL_FAILED_TEST_ONLY: installPackageLI. 问题解决
FAQ: Installation failed with message Failed to finalize session : INSTALL_FAILED_TEST_ONLY: install ...