使用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中在数据库中保存Checkbox数据(1)
Oct 09 PHP
PHP 和 XML: 使用expat函数(二)
Oct 09 PHP
Bo-Blog专用的给Windows服务器的IIS Rewrite程序
Aug 26 PHP
PHP生成excel时单元格内换行问题的解决方法
Aug 26 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
Feb 02 PHP
php找出指定范围内回文数且平方根也是回文数的方法
Mar 23 PHP
php实现专业获取网站SEO信息类实例
Apr 02 PHP
php实现paypal 授权登录
May 28 PHP
Laravel如何使用Redis共享Session
Feb 23 PHP
php在windows环境下获得cpu内存实时使用率(推荐)
Feb 08 PHP
php统计数组不同元素的个数的实例方法
Sep 26 PHP
PHP实现常用排序算法的方法
Feb 05 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
YB217、YB235、YB400浅听
2021/03/02 无线电
php判断用户是否手机访问代码
2015/06/08 PHP
JavaScript Prototype对象
2009/01/07 Javascript
JS弹出层单纯的绝对定位居中示例代码
2014/02/18 Javascript
jQuery 插件开发指南
2014/11/14 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
2015/05/09 Javascript
javascript入门之string对象【新手必看】
2016/11/22 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
JavaScript 自定义事件之我见
2017/09/25 Javascript
Vue引入sass并配置全局变量的方法
2018/06/27 Javascript
vue中的适配px2rem示例代码
2018/11/19 Javascript
vue实现简单瀑布流布局
2020/05/28 Javascript
JS实现进度条动态加载特效
2020/03/25 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
python实现简单购物商城
2016/05/21 Python
python中的随机函数小结
2018/01/27 Python
python正则表达式之对号入座篇
2018/07/24 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
python远程调用rpc模块xmlrpclib的方法
2019/01/11 Python
python抓取搜狗微信公众号文章
2019/04/01 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
HTML5图片预览实例分享
2014/06/04 HTML / CSS
Canvas中设置width与height的问题浅析
2018/11/01 HTML / CSS
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
化学相关工作求职信
2013/10/02 职场文书
打架检讨书800字
2014/01/10 职场文书
化学教师教学反思
2014/01/17 职场文书
运动会跳远广播稿
2014/02/04 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
毕业生面试求职信
2014/06/23 职场文书
2015年教师业务工作总结
2015/05/26 职场文书
体育教师研修感悟
2015/11/18 职场文书
优秀党员先进事迹材料2016
2016/02/29 职场文书
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript