使用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 Coding Tips(php小技巧)[2011/04/02最后更新]
May 02 PHP
一个典型的PHP分页实例代码分享
Jul 28 PHP
php ci框架验证码实例分析
Jun 26 PHP
主流PHP框架的优缺点对比分析
Dec 25 PHP
php将金额数字转化为中文大写
Jul 09 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
Jul 15 PHP
php实现爬取和分析知乎用户数据
Jan 26 PHP
CodeIgniter表单验证方法实例详解
Mar 03 PHP
php usort 使用用户自定义的比较函数对二维数组中的值进行排序
May 02 PHP
PHP面向对象之事务脚本模式(详解)
Jun 07 PHP
PHP赋值的内部是如何跑的详解
Jan 13 PHP
PHP实现统计代码行数小工具
Sep 19 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
收听短波不可能有声音清晰的品质吗
2021/03/01 无线电
php使用指定字符列表生成随机字符串的方法
2015/04/18 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
PHP递归实现快速排序的方法示例
2017/12/18 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
2019/10/15 PHP
JavaScript基本概念初级讲解论坛贴的学习记录
2009/02/22 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
ExtJs GridPanel简单的增删改实现代码
2010/08/26 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
jQuery用unbind方法去掉hover事件及其他方法介绍
2013/03/18 Javascript
jquery实现仿新浪微博评论滚动效果
2015/08/06 Javascript
在 Express 中使用模板引擎
2015/12/10 Javascript
复杂的javascript窗口分帧解析
2016/02/19 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
2016/11/16 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
不刷新网页就能链接新的js文件方法总结
2020/03/01 Javascript
vue-cli3使用mock数据的方法分析
2020/03/16 Javascript
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
Python实现单词拼写检查
2015/04/25 Python
使用py2exe在Windows下将Python程序转为exe文件
2016/03/04 Python
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
Python实现简单过滤文本段的方法
2017/05/24 Python
python3+PyQt5实现柱状图
2018/04/24 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
pytorch 模型可视化的例子
2019/08/17 Python
python3 求约数的实例
2019/12/05 Python
使用css3制作登录表单的步骤
2014/04/07 HTML / CSS
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
中国高端家电购物商城:顺电
2018/03/04 全球购物
大学生个人求职信范文
2013/09/21 职场文书
九年级家长会邀请函
2014/01/15 职场文书
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
电力安全事故反思
2014/04/27 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
springboot集成redis存对象乱码的问题及解决
2022/06/16 Java/Android