phpspider php爬虫框架
其实我自身的不是经常写正则,而且不规则的html去写正则本身就是件很麻烦的事情,如果页面有些微变动和更新就得再次去维护正则表达式,其实是非常蛋疼的
我第一感觉就是去找一下爬虫的库,但是发现现在php爬虫成熟的开源项目还挺多的
最开始我是准备使用phpquery,因为他实现了类似jQuery的功能,可以减少我花费的时间,但是毕竟是6年前的项目,原项目在http://code.google.com/p/phpquery/上,github虽然已经有人copy过去了,
年久失修,因为不是特别好使用,也别现在啥玩意都需要composer安装,没有提交到https://packagist.org,但是现在新项目好多都是基于php7的,有点过时了,
中了一会发现现在phpspider挺好用,注意不是php-spider,而且有中文文档,但是还没有特别完善,https://doc.phpspider.org/
https://github.com/owner888/phpspider
注意:本框架只能在命令行下运行,命令行、命令行、命令行,重要的事情说三遍 ^_^
但是我需要在web下运行,test_requests.php 发现已经实现了css选择器作为替代手写正则表达式的方法,很好,强不强大等用户自己使用过后再自己评价
可以直接在web上运行
use phpspider\core\requests;
use phpspider\core\selector;
引入
$html = requests::get('http://www.ccmn.cn/');
$data = selector::select($html, "#40288092327140f601327141c0560001", "css");
$data1 = selector::select($data, "tr", "css");
array_shift($data1);
$array = array();
if (!empty($data1) && is_array($data1)) {
foreach ($data1 as $k => &$v) {
$data2 = selector::select($v, "td", "css");
foreach ($data2 as $kk => &$vv) {
$vv = str_replace('
', '', $vv);
$vv = str_replace(array("\r\n", "\r", "\n"), "", $vv);
$vv = trim($vv);
}
$data2['3'] = selector::select($data2['3'], "font", "css");
unset($data2['6']);
$array[] = $data2;
}
就完成了一个还算有一点点复杂的网页固定位置的抓取
很简单对吧
https://doc.phpspider.org/selector.html
官方支持更强大的css选择器,基本常用的足够了
和写jquery的感觉差不多
还有这个是cli运行,
注意不要删了
#/\* Do NOT delete this comment \*/#
#/\* 不要删除这段注释 \*/#
会报错,因为蛋疼去匹配了这些
if (!preg_match("#/\* Do NOT delete this comment \*/#", $content) || !preg_match("#/\* 不要删除这段注释 \*/#", $content))
{
$msg = "Unknown error...";
log::error($msg);
exit;
}
有点强迫症的感觉
源码还没时间读,确实值得一读
目前其他功能测试过在写入博客
phpspider php爬虫框架的更多相关文章
- phpspider爬虫框架的使用
这几天使用PHP的爬虫框架爬取了一些数据,发现还是挺方便的,先上爬虫框架的文档 phpspider框架文档 使用方法其实在文档中写的很清楚而且在demo中也有使用示例,这里放下我自己的代码做个笔记 & ...
- php 爬虫框架
发现两款不错的爬虫框架,极力推荐下: phpspider 一款优秀的PHP开发蜘蛛爬虫 官方下载地址:https://github.com/owner888/phpspider 官方开发手册:http ...
- php爬虫框架选用什么
php爬虫框架选用什么 一.总结 一句话总结:phpspider:官方下载地址:https://github.com/owner888/phpspider 1.phpspider能够帮我们解决哪些问题 ...
- 爬虫框架--webmagic
官方有详细的使用文档:http://webmagic.io/docs/zh/ 简介:这只是个java爬虫框架,具体使用需要个人去定制,没有图片验证,不能获取js渲染的网页,但简单易用,可以通过xpat ...
- 教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scr ...
- Python之Scrapy爬虫框架安装及简单使用
题记:早已听闻python爬虫框架的大名.近些天学习了下其中的Scrapy爬虫框架,将自己理解的跟大家分享.有表述不当之处,望大神们斧正. 一.初窥Scrapy Scrapy是一个为了爬取网站数据,提 ...
- [开源 .NET 跨平台 数据采集 爬虫框架: DotnetSpider] [一] 初衷与架构设计
[DotnetSpider 系列目录] 一.初衷与架构设计 二.基本使用 三.配置式爬虫 四.JSON数据解析与配置系统 为什么要造轮子 同学们可以去各大招聘网站查看一下爬虫工程师的要求,大多是招JA ...
- 使用Scrapy爬虫框架简单爬取图片并保存本地(妹子图)
初学Scrapy,实现爬取网络图片并保存本地功能 一.先看最终效果 保存在F:\pics文件夹下 二.安装scrapy 1.python的安装就不说了,我用的python2.7,执行命令pip ins ...
- 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神
原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...
随机推荐
- 单片机 MCU 中 stack 使用的探讨
stack 的使用,是单片机开发中影响最大,但是最少被讨论的问题.而提及这个问题的地方,都是对这个问题含糊其辞. 今天花了点时间,使用最笨的办法,直接阅读汇编代码,来对这个问题就行探究,这里做一下记录 ...
- ZMQ示例:使用 curve 进行加密通信
1. ZMQ 官方文档 ZMQ 的官方文档中关于 curve 的介绍如下: Client and server roles A socket using CURVE can be either cli ...
- [转]MPP架构
数据库构架设计中主要有Shared Everthting.Shared Nothing.和Shared Disk: Shared Everthting:一般是针对单个主机,完全透明共享CPU/MEMO ...
- CentOS5.9 编译Emacs 24
从Emacs官方网站下载最新版解压后,执行 ./configure 得到错误信息: configure: error: The following required libraries were no ...
- 修改Egret引擎代码的方法
某些情况下,我们需要修改Egret引擎的源码,我们可以在源码目录(一般如下:xxx\Egret\engine\x.x.x\src\egret)下直接修改ts代码. 在对应的项目下打开CMD命令行,输入 ...
- 为Sublime Text 设置全局启动快捷键
为Sublime Text创建快捷方式.找到Sublime Text安装目录中的“sublime_text.exe”文件,然后右击创建快捷方式,如下图: 为Sublime Tex设置全局快捷键.将上 ...
- [转]list的交集,差集,并集
原文地址:https://www.cnblogs.com/changfanchangle/p/8966860.html 工作中用到了list的取差集,发现还是挺好用的.所以记录下. 需求 list的方 ...
- [转]MySQL中timestamp数据类型的特点
原文地址:https://www.imooc.com/article/16158 在使用MySQL数据库时有很多常见的误解,其中使用int类型来保存日期数据会提高数据读取的效率就是比较常见的一个误解. ...
- rm -rf python 实现 v0.1
#coding=utf- import os def join(arr,join_falg): res = "" for a in arr: res += a+join_falg ...
- 【ML入门系列】(三)监督学习和无监督学习
概述 在机器学习领域,主要有三类不同的学习方法: 监督学习(Supervised learning) 非监督学习(Unsupervised learning) 半监督学习(Semi-supervise ...