使用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 什么是PEAR?(第三篇)
Mar 19 PHP
php flv视频时间获取函数
Jun 29 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
PHP函数篇之掌握ord()与chr()函数应用
Dec 05 PHP
PHP新手NOTICE错误常见解决方法
Dec 07 PHP
用php实现百度网盘图片直链的代码分享
Nov 01 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
Aug 06 PHP
php缩小png图片不损失透明色的解决方法
Dec 25 PHP
PHP入门之常量简介和系统常量
May 12 PHP
php简单获取文件扩展名的方法
Mar 24 PHP
php生成网页桌面快捷方式
May 05 PHP
php 删除指定文件夹的实例讲解
Jul 25 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 无线电
教你如何快捷的使用cmd访问mysql小技巧
2014/05/26 PHP
php使用GD实现颜色渐变实例
2015/06/02 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
JQuery导航菜单选择特效
2016/04/11 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
JS拖拽排序插件Sortable.js用法实例分析
2019/02/20 Javascript
layui 富文本赋值,取值,取纯文本值的实例
2019/09/18 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
d3.js实现图形拖拽
2019/12/19 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
详解Vue中的自定义指令
2020/12/07 Vue.js
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
[43:32]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS NewBee第一场
2014/05/26 DOTA
[01:35]2018完美盛典章节片——共竞
2018/12/17 DOTA
python生成日历实例解析
2014/08/21 Python
django celery redis使用具体实践
2019/04/08 Python
Python 中包/模块的 `import` 操作代码
2019/04/22 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
python将时分秒转换成秒的实例
2019/12/07 Python
Python urllib库如何添加headers过程解析
2020/10/05 Python
英国鲜花速递:Serenata Flowers
2018/04/03 全球购物
Nº21官方在线商店:numeroventuno.com
2019/09/26 全球购物
UNIX文件系统常用命令
2012/05/25 面试题
放飞梦想演讲稿600字
2014/08/26 职场文书
2014卖家双十一活动策划书
2014/09/29 职场文书
八年级英语教学计划
2015/01/23 职场文书
萤火虫之墓观后感
2015/06/05 职场文书
2016年幼儿园万圣节活动总结
2016/04/05 职场文书
Python破解极验滑动验证码详细步骤
2021/05/21 Python
Django框架中视图的用法
2022/06/10 Python
ssh服务器拒绝了密码 请再试一次已解决(亲测有效)
2022/08/14 Servers