使用phpQuery采集网页的方法


Posted in PHP onNovember 13, 2013

phpQuery是一个基于PHP的服务端开源项目,它可以让PHP开发人员轻松处理DOM文档内容,比如获取某新闻网站的头条信息。更有意思的是,它采用了jQuery的思想,你可以像使用jQuery一样处理页面内容,获取你想要的页面信息。
采集头条
先看一实例,现在我要采集新浪网国内新闻的头条,代码如下:

include 'phpQuery/phpQuery.php'; 
phpQuery::newDocumentFile('https://3water.com'); 
echo pq(".blkTop h1:eq(0)")->html();

简单的三行代码,就可以获取头条内容。首先在程序中包含phpQuery.php核心程序,然后调用读取目标网页,最后输出对应标签下的内容。
pq()是一个功能强大的方法,跟jQuery的$()如出一辙,jQuery的选择器基本上都能使用在phpQuery上,只要把“.”变成“->”。如上例中,pq(“.blkTop h1:eq(0)”)抓取了页面class属性为blkTop的DIV元素,并找到该DIV内部的第一个h1标签,然后用html()方法获取h1标签里的内容(带html标签),也就是我们要获取的头条信息,如果使用text()方法,则只获取头条的文本内容。当然要使用好phpQuery,关键是要找对文档中对应内容的节点。
采集文章列表
下面再来看一个例子,获取helloweba.com网站的blog列表,请看代码:
include 'phpQuery/phpQuery.php'; 
phpQuery::newDocumentFile('https://3water.com'); 
$artlist = pq(".blog_li"); 
foreach($artlist as $li){ 
   echo pq($li)->find('h2')->html().""; 
}

通过循环列表中的DIV,找出文章标题并输出,就是这么简单。
解析XML文档
假设现在有一个这样的test.xml文档:
<?xml version="1.0" encoding="utf-8"?> 
<root> 
  <contact> 
     <name>张三</name> 
     <age>22</age> 
  </contact> 
  <contact> 
     <name>王五</name> 
     <age>18</age> 
  </contact> 
</root>

现在我要获取名字为张三的联系人的年龄,代码如下:
include 'phpQuery/phpQuery.php'; 
phpQuery::newDocumentFile('test.xml'); 
echo pq('contact > age:eq(0)');
结果输出:22

像jQuery一样,精准查找文档节点,输出节点下的内容,解析一个XML文档就是这么简单。现在你不必为采集网站内容而使用那些头疼的正则算法、内容替换等繁琐的代码了,有了phpQuery,一切就变得轻松多了。
phpquery项目官网地址:http://code.google.com/p/phpquery/
PHP 相关文章推荐
php购物车实现代码
Oct 10 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
Feb 16 PHP
PHP中的一些常用函数收集
May 26 PHP
学习php设计模式 php实现工厂模式(factory)
Dec 07 PHP
PHP简单遍历对象示例
Sep 28 PHP
PHP实现二维数组根据key进行排序的方法
Dec 30 PHP
利用PHPExcel实现Excel文件的写入和读取
Apr 26 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 PHP
基于 Swoole 的微信扫码登录功能实现代码
Jan 15 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 PHP
eval(cmd)与eval($cmd)的区别与联系
Jul 07 PHP
phpQuery占用内存过多的处理方法
Nov 13 #PHP
PHP反射类ReflectionClass和ReflectionObject的使用方法
Nov 13 #PHP
php堆排序(heapsort)练习
Nov 13 #PHP
php生成EAN_13标准条形码实例
Nov 13 #PHP
使用php计算排列组合的方法
Nov 13 #PHP
测试php函数的方法
Nov 13 #PHP
PHP中判断变量为空的几种方法小结
Nov 12 #PHP
You might like
php 文件上传代码(限制jpg文件)
2010/01/05 PHP
php实现将任意进制数转换成10进制的方法
2015/04/17 PHP
php超快高效率统计大文件行数
2015/07/05 PHP
php中json_encode不兼容JSON_UNESCAPED_UNICODE的解决方案
2016/05/31 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
Swoole 5将移除自动添加Event::wait()特性详解
2019/07/10 PHP
解决thinkphp5未定义变量会抛出异常,页面错误,请稍后再试的问题
2019/10/16 PHP
javascript代码加载优化方法
2011/01/30 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
2013/07/07 Javascript
JavaScript知识点总结(十)之this关键字
2016/05/31 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
微信小程序实现吸顶效果
2020/01/08 Javascript
jQuery实现html可联动的百分比进度条
2020/03/26 jQuery
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
通过vue刷新左侧菜单栏操作
2020/08/06 Javascript
vue组件中传值EventBus的使用及注意事项说明
2020/11/16 Javascript
python判断windows系统是32位还是64位的方法
2015/05/11 Python
Win7下搭建python开发环境图文教程(安装Python、pip、解释器)
2016/05/17 Python
python类中super()和__init__()的区别
2016/10/18 Python
python executemany的使用及注意事项
2017/03/13 Python
python多进程实现文件下载传输功能
2018/07/28 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
2020/06/01 Python
css3实现3D色子翻转特效
2014/12/23 HTML / CSS
结合CSS3的布局新特征谈谈常见布局方法
2016/01/22 HTML / CSS
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
Artist Guitars新西兰:乐器在线商店
2017/09/17 全球购物
个人应聘自我评价分享
2013/11/18 职场文书
办公室文员工作职责
2014/01/31 职场文书
模范家庭事迹材料
2014/02/10 职场文书
对教师的评语
2014/04/28 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
考研导师推荐信范文
2015/03/27 职场文书
2016教师年度考核评语大全
2015/12/01 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书