使用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 相关文章推荐
一个连接两个不同MYSQL数据库的PHP程序
Oct 09 PHP
树型结构列出指定目录里所有文件的PHP类
Oct 09 PHP
php_xmlhttp 乱码问题解决方法
Aug 07 PHP
php 提速工具eAccelerator 配置参数详解
May 16 PHP
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
Jun 09 PHP
thinkphp配置连接数据库技巧
Dec 02 PHP
php校验表单检测字段是否为空的方法
Mar 20 PHP
PHP Streams(流)详细介绍及使用
May 12 PHP
CodeIgniter控制器之业务逻辑实例分析
Jan 20 PHP
PHP常用字符串函数小结(推荐)
Aug 05 PHP
PHPStudy下如何为Apache安装SSL证书的方法步骤
Jan 23 PHP
Windows上php5.6操作mongodb数据库示例【配置、连接、获取实例】
Feb 13 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解答方法
2012/02/04 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
一个简单的php MVC留言本实例代码(必看篇)
2016/09/22 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
JQuery异步获取返回值中文乱码的解决方法
2015/01/29 Javascript
JS实现漂亮的窗口拖拽效果(可改变大小、最大化、最小化、关闭)
2015/10/10 Javascript
Jquery修改image的src属性,图片不加载问题的解决方法
2016/05/17 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
JavaScript跨域调用基于JSON的RESTful API
2016/07/09 Javascript
浅析location.href跨窗口调用函数
2016/11/22 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)
2016/12/02 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
vue响应式更新机制及不使用框架实现简单的数据双向绑定问题
2019/06/27 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
2020/04/22 Javascript
Python+Django在windows下的开发环境配置图解
2009/11/11 Python
Python解决线性代数问题之矩阵的初等变换方法
2018/12/12 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
对python3 sort sorted 函数的应用详解
2019/06/27 Python
Python 解析pymysql模块操作数据库的方法
2020/02/18 Python
Pytorch 卷积中的 Input Shape用法
2020/06/29 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
孤独星球出版物:Lonely Planet Publications
2018/03/17 全球购物
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
关于VPN
2012/06/10 面试题
医科大学生毕业的自我评价分享
2013/11/12 职场文书
外语系毕业生自荐信范文
2013/12/16 职场文书
直接有效的自我评价
2014/01/11 职场文书
员工培训邀请函
2014/02/02 职场文书
安全演讲稿大全
2014/05/09 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
检察院对照“四风”认真查找问题落实整改措施
2014/09/26 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
开展党的群众路线教育实践活动情况汇报
2014/11/05 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP