php 爬网页数据 入库,phpspider是一个基于QueryList3的数据PHP爬虫,页面深度爬取,超简单的使用...
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爬虫,页面深度爬取,超简单的使用...相关推荐
- 【web前端特效源码】使用HTML5+CSS3制作一个会动的电脑桌面+昼夜变化动画效果~~适合初学者~超简单~ |前端开发
b站视频演示效果: [web前端特效源码]使用HTML5+CSS3制作一个会动的电脑桌面+昼夜变化动画效果~~适合初学者~超简单~ |前端开发|IT软件 效果图: 完整代码: <!DOCTYPE ...
- 如何将某个groupbox中的数据赋值到另一个groupbox_React中的数据和数据流
第2章大致介绍了React.我们花了些时间学习了React,了解它的设计和API背后的一些概念,我们甚至还逐步说明了如何用React组件构建一个简单注释框.在第4章中,我们将开始更全面地使用组件并开始 ...
- 实现一个自动搜狗搜索的小爬虫----user-agent反爬
今天迎来了第一个反爬 今天实现了提供一个关键词键入,然后使用爬虫对这个关键词进行搜狗搜索,将搜索后的结果保存到文件中 这里用到了一个小反爬,User-Agent反爬 要让get请求携带headers, ...
- 一个基于图的数据管理系统-gStore
gStore是遵循 BSD协议的一个开源项目.一个基于图的 RDF 三元组存储的数据管理系统.该项目是北京大学.滑铁卢大学.香港科技大学的联合研究项目.中国北京大学计算机科学与技术研究所的数据库组对该 ...
- cef 前进后台 实现_CefSpider: 一个基于Webkit,Cef框架构建爬虫,项目代号:“车风”,具备浏览器所有特性,欢迎你给我一个Star,你的Star是该项目前进的动力!...
欢迎大家给我一个Star,你的Star是该项目前进的动力! CefSpider设计图 CefSpider 产品开发代号为"车风",后面相关说明可能以'车风'代替进行描述,该项目以C ...
- html webservice数据交互_一种基于WebService的数据交换方法
一种基于WebService的数据交换方法 [专利摘要]本发明涉及数据交换[技术领域],特别涉及一种基于WebService的数据交换方法.本发明是以Web服务为依托,通过定义参数的方式进行传入内容和 ...
- mysql的数据层基类_C# 基于MySQL的数据层基类(MySQLHelper)
using System; using System.Data; using MySql.Data; using MySql.Data.MySqlClient; namespace DBUtility ...
- 基于html5的数据可视化实现方法研究,基于HTML5的数据可视化实现方法研究
信息科技 Information Technology 基于HTML5的数据可视化实现方法研究 高科同济大学电子与信息学院,上海 201804摘要 HTML5的出现,为数据可视化提供了新的实现方法.本 ...
- 多元经验模态分解_【Applied Energy最新原创论文】一个基于多元搜索引擎数据的多尺度油价预测方法...
原文信息: A multi-scale method for forecasting oil price with multi-factor search engine data 原文链接: http ...
- matlab怎么编写数据处理程序,【悬赏--已结束】求编写一个基于Matlab的数据处理程序...
方案征集活动已经结束,不再接受新的方案投稿.共征集到3个方案,基础方案,LabView方案.以及Matlab GUI方案.详见2楼. 求Matlab编程实现以下功能:基本要求 1.读取8192个字节的 ...
最新文章
- CentOS6 修改主机名的规范步骤
- spotlight soo5072:there was an error reading the tnsnames.ora
- Linux常用初级指令介绍
- mysql springboot 缓存_Spring Boot 整合 Redis 实现缓存操作
- C++ 判断系统大小字节序
- 北大教授最短毕业致辞。#人性的可爱 #饶毅#自我尊重
- 华为的数字化转型与数据治理
- 行星齿轮设计_行星减速机内部结构图与传动原理
- 设计模式----策略模式
- 网易乐得数据库及运维分享会
- 分享35套极其精美的高清桌面壁纸免费下载
- 红米手机4A超简单刷入开发版获取ROOT超级权限的教程
- Java核心技术第一周学习总结
- 云计算演义(11)为什么阿里云不及格?
- 标准C语言基础知识1
- iOS开发——项目篇—高仿百思不得姐
- 织梦php如何完全卸载,DEDE织梦CMS后台精简可以删掉的不需要的文件
- 关于在python的tkinter界面中镶嵌mayplotlib动态图
- 全国计算机软件考试用书目录
- 教师计算机专业特长怎么写,应聘教师特长怎么写