phpspider简介

phpspider是一个基于QueryList3的数据爬虫,采集任何复杂的页面 ,可以简单的深度爬取无限级页面。 QueryList3文档 QueryList最新版

phpspider 安装

通过composer安装:

composer require hypchina/phpspider:dev-master

phpspider 使用

定义爬虫类KuaileSpider.php

//自定义KuaileSpider类 需要继承BaseSpider

class KuaileSpider extends BaseSpider {

public function __construct(){

parent::__construct();

//可以初始设置多个请求

$this->start_url = array(

new SpiderRequest('https://caipiao.ip138.com/kuaile10fen/xingyunnongchang/','https://caipiao.ip138.com/kuaile10fen/',"GET"),

);

}

/**

* 返回SpiderRequestBean对象 将会在后续中继续爬取

* @param String $response

* @return \phpspider\Spideritem\SpiderItem | \phpspider\Spider\Request\SpiderRequest | mixed

*/

public function parse($response){

//使用QueryList进行数据筛选

$rules = [

//发布日期

'date' => ['td:eq(0)>span','text'],

//期号

'issue' => ['td:eq(1)>span','text'],

//中奖号码

'number' => ['.award','html'],

];

$data = QueryList::Query($response, $rules,'.panel>table>tbody tr')->getData(function($item){

$item['number'] = QueryList::Query($item['number'],[

'number' => ['span','data-value'],

])->data;

$item['number'] = array_column($item['number'],'number');

return $item;

});

//测试一波,注意返回SpiderRequest类型的时候,不要陷入无限循环,最好加上特定判断再返回,确保代码能够结束

//假设 这里从当前$response中获取的某个url,再次进行深度爬取 这个请求的响应会传递到最终处理方法$this->test()

//yield (new SpiderRequest('https://caipiao.ip138.com/shishicai/chongqing/','https://caipiao.ip138.com/kuaile10fen/',"GET",array($this,"test")));

foreach($data as $key=>$item){

$item['number'] = array_map(function($item){

return str_pad($item,2,0,STR_PAD_LEFT);

}, $item['number']);

$item['number'] = implode('', $item['number']);

//自定义数据处理类

$spiderItem = new KuaileSpiderItem();

$spiderItem->setValue('issue', $item['issue']);

$spiderItem->setValue('luck', $item['number']);

$spiderItem->setValue('date', $item['date']);

$spiderItem->setValue('state', 'NORMAL');

//这里可以直接返回的数据类

yield $spiderItem;

}

}

}

定义数据处理类KuaileSpiderItem.php

use phpspider\Spideritem\SpiderItem;

class KuaileSpiderItem extends SpiderItem

{

/**

* 接收组合完成的数据,在这里可以进行数据入库

* @param \phpspider\Spider\BaseSpider $spider

* @return boolean 返回假 就放弃该条数据

*/

public function proceed($spider){

$data = $this->values;

//todo 进行数据入库...

var_dump($data);

return $data;

}

}

运行结果run.php

include "vendor/autoload.php";

//--------运行对应的spider--------

(new \Tests\KuaileSpider())->run();

KuaileSpiderItem中的打印结果:

array(4) {

["issue"]=>

string(10) "2019090615"

["luck"]=>

string(16) "1713180410090807"

["date"]=>

string(16) "2019-09-06 09:01"

["state"]=>

string(6) "NORMAL"

}

array(4) {

["issue"]=>

string(10) "2019090614"

["luck"]=>

string(16) "1710191312030920"

["date"]=>

string(16) "2019-09-06 08:41"

["state"]=>

string(6) "NORMAL"

}

array(4) {

["issue"]=>

string(10) "2019090613"

["luck"]=>

string(16) "0419050113161220"

["date"]=>

string(16) "2019-09-06 08:21"

["state"]=>

string(6) "NORMAL"

}

//省略....

php 爬网页数据 入库,phpspider是一个基于QueryList3的数据PHP爬虫,页面深度爬取,超简单的使用...相关推荐

  1. 【web前端特效源码】使用HTML5+CSS3制作一个会动的电脑桌面+昼夜变化动画效果~~适合初学者~超简单~ |前端开发

    b站视频演示效果: [web前端特效源码]使用HTML5+CSS3制作一个会动的电脑桌面+昼夜变化动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTYPE ...

  2. 如何将某个groupbox中的数据赋值到另一个groupbox_React中的数据和数据流

    第2章大致介绍了React.我们花了些时间学习了React,了解它的设计和API背后的一些概念,我们甚至还逐步说明了如何用React组件构建一个简单注释框.在第4章中,我们将开始更全面地使用组件并开始 ...

  3. 实现一个自动搜狗搜索的小爬虫----user-agent反爬

    今天迎来了第一个反爬 今天实现了提供一个关键词键入,然后使用爬虫对这个关键词进行搜狗搜索,将搜索后的结果保存到文件中 这里用到了一个小反爬,User-Agent反爬 要让get请求携带headers, ...

  4. 一个基于图的数据管理系统-gStore

    gStore是遵循 BSD协议的一个开源项目.一个基于图的 RDF 三元组存储的数据管理系统.该项目是北京大学.滑铁卢大学.香港科技大学的联合研究项目.中国北京大学计算机科学与技术研究所的数据库组对该 ...

  5. cef 前进后台 实现_CefSpider: 一个基于Webkit,Cef框架构建爬虫,项目代号:“车风”,具备浏览器所有特性,欢迎你给我一个Star,你的Star是该项目前进的动力!...

    欢迎大家给我一个Star,你的Star是该项目前进的动力! CefSpider设计图 CefSpider 产品开发代号为"车风",后面相关说明可能以'车风'代替进行描述,该项目以C ...

  6. html webservice数据交互_一种基于WebService的数据交换方法

    一种基于WebService的数据交换方法 [专利摘要]本发明涉及数据交换[技术领域],特别涉及一种基于WebService的数据交换方法.本发明是以Web服务为依托,通过定义参数的方式进行传入内容和 ...

  7. mysql的数据层基类_C# 基于MySQL的数据层基类(MySQLHelper)

    using System; using System.Data; using MySql.Data; using MySql.Data.MySqlClient; namespace DBUtility ...

  8. 基于html5的数据可视化实现方法研究,基于HTML5的数据可视化实现方法研究

    信息科技 Information Technology 基于HTML5的数据可视化实现方法研究 高科同济大学电子与信息学院,上海 201804摘要 HTML5的出现,为数据可视化提供了新的实现方法.本 ...

  9. 多元经验模态分解_【Applied Energy最新原创论文】一个基于多元搜索引擎数据的多尺度油价预测方法...

    原文信息: A multi-scale method for forecasting oil price with multi-factor search engine data 原文链接: http ...

  10. matlab怎么编写数据处理程序,【悬赏--已结束】求编写一个基于Matlab的数据处理程序...

    方案征集活动已经结束,不再接受新的方案投稿.共征集到3个方案,基础方案,LabView方案.以及Matlab GUI方案.详见2楼. 求Matlab编程实现以下功能:基本要求 1.读取8192个字节的 ...

最新文章

  1. CentOS6 修改主机名的规范步骤
  2. spotlight soo5072:there was an error reading the tnsnames.ora
  3. Linux常用初级指令介绍
  4. mysql springboot 缓存_Spring Boot 整合 Redis 实现缓存操作
  5. C++ 判断系统大小字节序
  6. 北大教授最短毕业致辞。#人性的可爱 #饶毅#自我尊重
  7. 华为的数字化转型与数据治理
  8. 行星齿轮设计_行星减速机内部结构图与传动原理
  9. 设计模式----策略模式
  10. 网易乐得数据库及运维分享会
  11. 分享35套极其精美的高清桌面壁纸免费下载
  12. 红米手机4A超简单刷入开发版获取ROOT超级权限的教程
  13. Java核心技术第一周学习总结
  14. 云计算演义(11)为什么阿里云不及格?
  15. 标准C语言基础知识1
  16. iOS开发——项目篇—高仿百思不得姐
  17. 织梦php如何完全卸载,DEDE织梦CMS后台精简可以删掉的不需要的文件
  18. 关于在python的tkinter界面中镶嵌mayplotlib动态图
  19. 全国计算机软件考试用书目录
  20. 教师计算机专业特长怎么写,应聘教师特长怎么写

热门文章

  1. MQTT代理服务器的选择
  2. Hadoop版本比较
  3. 影响摄像头移动侦测灵敏度因素
  4. php扩展 ioncube组件的安装方法_安装IonCube Loader扩展方法
  5. 戴尔t40服务器自动开机,新安装的戴尔T40服务器风扇不转了是什么原因?
  6. xmapp环境搭建注意事项
  7. Unity3D中GPS定位信息及经纬度转换方法
  8. 【CGAL_网格处理】平滑处理
  9. 2022自编译最新稳定版newifi3固件
  10. 中国500强企业是如何构建电子签章系统的?