使用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入门速成教程
Mar 19 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
Youku 视频绝对地址获取的方法详解
Jun 26 PHP
php 检查电子邮件函数(自写)
Jan 16 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
Jul 25 PHP
jQuery Mobile + PHP实现文件上传
Dec 12 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
Dec 24 PHP
php数组使用规则分析
Feb 27 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
php采集神器cURL使用方法详解
Feb 19 PHP
PHP中STDCLASS用法实例分析
Nov 11 PHP
用PHP将Unicode 转化为UTF-8的实现方法(推荐)
Feb 08 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安装攻略:常见问题解答(三)
2006/10/09 PHP
PHP中输出转义JavaScript代码的实现代码
2011/04/22 PHP
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
JS对img标签进行优化使用onerror显示默认图像
2014/04/24 Javascript
jQuery固定浮动侧边栏实现思路及代码
2014/09/28 Javascript
jQuery实现类似淘宝网图片放大效果的方法
2015/07/08 Javascript
JS实现n秒后自动跳转的两种方法
2020/11/30 Javascript
jQuery表单对象属性过滤选择器实例详解
2016/09/13 Javascript
Angular.JS内置服务$http对数据库的增删改使用教程
2017/05/07 Javascript
对于input 框限定输入值为浮点型的js代码
2017/09/25 Javascript
详解关于webpack多入口热加载很慢的原因
2019/04/24 Javascript
详解Vue-Router源码分析路由实现原理
2019/05/15 Javascript
微信小程序下拉框搜索功能的实现方法
2019/07/31 Javascript
Vue项目利用axios请求接口下载excel
2020/11/17 Vue.js
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
[03:02]生活中的Dendi之野外度假篇
2016/08/09 DOTA
Django权限机制实现代码详解
2018/02/05 Python
python爬取足球直播吧五大联赛积分榜
2018/06/13 Python
python自定义函数实现一个数的三次方计算方法
2019/01/20 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
Python文件路径名的操作方法
2019/10/30 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
tensorflow将图片保存为tfrecord和tfrecord的读取方式
2020/02/17 Python
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
Jeep牧马人、切诺基和自由人零配件:4 Wheel Drive Hardware
2017/07/02 全球购物
印尼最大的网上书店:Gramedia.com
2018/09/13 全球购物
自我评价范文点评
2013/12/04 职场文书
农村门前三包责任书
2014/07/25 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
创先争优活动心得体会
2014/09/04 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
2016入党积极分子党校培训心得体会
2016/01/06 职场文书
Python实现归一化算法详情
2022/03/18 Python