使用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 相关文章推荐
详解:――如何将图片储存在数据库里
Dec 05 PHP
批量获取memcache值并按key的顺序返回的实现代码
Jun 14 PHP
使用淘宝IP库获取用户ip地理位置
Oct 27 PHP
php实现MySQL数据库备份与还原类实例
Dec 09 PHP
PHP中imagick函数的中文解释
Jan 21 PHP
php无序树实现方法
Jul 28 PHP
PHP实现补齐关闭的HTML标签
Mar 22 PHP
PHP文件上传类实例详解
Apr 08 PHP
php + nginx项目中的权限详解
May 23 PHP
PHP重置数组为连续数字索引的几种方式总结
Mar 12 PHP
php简单计算权重的方法示例【适合抽奖类应用】
Jun 10 PHP
MacOS下PHP7.1升级到PHP7.4.15的方法
Feb 22 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模板中出现空行解决方法
2011/03/08 PHP
smarty内部日期函数html_select_date()用法实例分析
2015/07/08 PHP
对比分析php中Cookie与Session的异同
2016/02/19 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
PHP实现的策略模式示例
2019/03/20 PHP
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
JS对话框_JS模态对话框showModalDialog用法总结
2014/01/11 Javascript
jquery插件unobtrusive实现片段式加载
2015/06/15 Javascript
Node.js的环境安装配置(使用nvm方式)
2016/10/11 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
bootstrap Validator 模态框、jsp、表单验证 Ajax提交功能
2017/02/17 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
vue实现百度语音合成的实例讲解
2019/10/14 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
ant design的table组件实现全选功能以及自定义分页
2020/11/17 Javascript
原生js中运算符及流程控制示例详解
2021/01/05 Javascript
[26:21]浴火之凤-TI4世界冠军Newbee战队纪录片
2014/08/07 DOTA
[01:02:06]LGD vs Mineski Supermajor 胜者组 BO3 第二场 6.5
2018/06/06 DOTA
Python实现类继承实例
2014/07/04 Python
简单分析Python中用fork()函数生成的子进程
2015/05/04 Python
python常用知识梳理(必看篇)
2017/03/23 Python
win10下Python3.6安装、配置以及pip安装包教程
2017/10/01 Python
Python3 实现减少可调用对象的参数个数
2019/12/20 Python
使用python实现下载我们想听的歌曲,速度超快
2020/07/09 Python
德国箱包网上商店:koffer24.de
2016/07/27 全球购物
美国非常受欢迎的Spa品牌:Bliss必列斯
2018/04/10 全球购物
寄语十八大感言
2014/02/07 职场文书
入党综合考察材料
2014/06/02 职场文书
公司委托书格式
2014/08/01 职场文书
高中军训的心得体会
2014/09/01 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
电工实训报告总结
2014/11/05 职场文书
2016党员干部廉政准则学习心得体会
2016/01/20 职场文书
七年级话题作文之执着
2019/11/19 职场文书