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数据库操作类的更多相关文章

  1. 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~

    最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...

  2. 一个基于PDO的数据库操作类(新) 一个PDO事务实例

    <?php /* * 作者:胡睿 * 日期:2011/03/19 * 电邮:hooray0905@foxmail.com * * 20110319 * 常用数据库操作,如:增删改查,获取单条记录 ...

  3. 一个简单的基于 DirectShow 的播放器 2(对话框类)

    上篇文章分析了一个封装DirectShow各种接口的封装类(CDXGraph):一个简单的基于 DirectShow 的播放器  1(封装类) 本文继续上篇文章,分析一下调用这个封装类(CDXGrap ...

  4. 简单的php数据库操作类代码(增,删,改,查)

    这几天准备重新学习,梳理一下知识体系,同时按照功能模块划分做一些东西.所以.mysql的操作成为第一个要点.我写了一个简单的mysql操作类,实现数据的简单的增删改查功能. 数据库操纵基本流程为: 1 ...

  5. 一个基于ASP.NET(C#)的ACCESS数据库操作类

    using System; using System.Collections; using System.Collections.Specialized; using System.Data; usi ...

  6. mysql数据库基于linux的安装步骤及数据库操作

    一.数据库安装 Ubuntu上安装MySQL非常简单只需要几条命令就可以完成. sudo apt-get install mysql-server sudo apt-get isntall mysql ...

  7. 基于Confluent.Kafka实现的Kafka客户端操作类使用详解

    一.引言 有段时间没有写东西了,当然不是没得写,还有MongoDB的系列没有写完呢,那个系列还要继续.今天正好是周末,有点时间,来写新东西吧.最近公司用了Kafka做为消息的中间件,最开始写的那个版本 ...

  8. 人生苦短_我用Python_pymysql库对Mysql数据库操作_009

    # coding=utf-8 import pymysql ''' 数据库的登录信息: config={ 'host':'118.126.108.xxx', # :主机 'user':'python' ...

  9. C#利用反射+特性实现简单的实体映射数据库操作类

    附上源代码: using System; using System.Collections.Generic; using System.Data; using System.Linq; using S ...

随机推荐

  1. Struts2+json+hignchart(简单柱状图实现--适合jquery小白)

    做了一个简单的基于Struts2 + Json + HighChart的小例子,费了一下午+晚上的时间,虽然简单,但对于我这种Jquery+Ajax小白的人还是很值得记录的. 哈哈哈 # 0. 关键点 ...

  2. Java并发编程之线程创建和启动(Thread、Runnable、Callable和Future)

    这一系列的文章暂不涉及Java多线程开发中的底层原理以及JMM.JVM部分的解析(将另文总结),主要关注实际编码中Java并发编程的核心知识点和应知应会部分. 说在前面,Java并发编程的实质,是线程 ...

  3. UpdateBatch与事务处理的一点总结

    对于某些设置或者提交,如果希望是全部修改完毕后才确定生效,可以将DataSet的LockType:=ltBatchOptimistic,这样就可以了.然后每次做的修改和改动都暂时保存在缓存中,必须通过 ...

  4. POJ1815_Friendship

    一个无向图,问你删除多少点后,可以隔断起点到终点的所有路径?输出字典序最小的删点方案. 求最小点割,先拆点,容量为1,普通边容量无穷,最大流即为应删点数. 需要求出字典序最小的方案,可以从小到大枚举所 ...

  5. spring通过工厂模式解决页面耦合问题

    spring通过工厂模式解决页面耦合问题

  6. poj3061 Subsequence(尺取)

    Description A sequence of N positive integers (10 < N < 100 000), each of them less than or eq ...

  7. P3119 [USACO15JAN]草鉴定Grass Cownoisseur

    题目描述 In an effort to better manage the grazing patterns of his cows, Farmer John has installed one-w ...

  8. 【原创】查询某个SQL在Oracle的会话

    select sql_Text,last_active_time from v$sql where sql_text like '%sql语句%'order by last_active_time

  9. 51nod 1421 最大MOD值 | 暴力

    题面 有一个a数组,里面有n个整数.现在要从中找到两个数字(可以是同一个) ai,aj ,使得 ai mod aj 最大并且 ai ≥ aj. Input 单组测试数据. 第一行包含一个整数n,表示数 ...

  10. BZOJ 1391 [Ceoi2008]order

    1391: [Ceoi2008]order Description 有N个工作,M种机器,每种机器你可以租或者买过来. 每个工作包括若干道工序,每道工序需要某种机器来完成,你可以通过购买或租用机器来完 ...