使用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 20 PHP
php 文章采集正则代码
Dec 28 PHP
PHP isset()与empty()的使用区别详解
Aug 29 PHP
php开发环境配置记录
Jan 14 PHP
数组与类使用PHP的可变变量名需要的注意的问题
Jun 20 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
Feb 13 PHP
PHP中mysqli_affected_rows作用行数返回值分析
Dec 26 PHP
PHP翻页跳转功能实现方法
Nov 30 PHP
win7安装php框架Yii的方法
Jan 25 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP PDOStatement::columnCount讲解
Jan 30 PHP
laravel按天、按小时,查询数据的实例
Oct 09 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异常处理使用示例
2014/02/25 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
php使用get_class_methods()函数获取分类的方法
2016/07/20 PHP
Laravel5.1框架路由分组用法实例分析
2020/01/04 PHP
表单内同名元素的控制
2006/11/22 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
javascript打印大全(打印页面设置/打印预览代码)
2013/03/29 Javascript
JavaScript中reduce()方法的使用详解
2015/06/09 Javascript
详细分析JavaScript变量类型
2015/07/08 Javascript
JavaScript中字面量与函数的基本使用知识
2015/10/20 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
javascript时间排序算法实现活动秒杀倒计时效果
2021/01/28 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
js中小数向上取整数,向下取整数,四舍五入取整数的实现(必看篇)
2017/02/13 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
vue如何解决循环引用组件报错的问题
2018/09/22 Javascript
vue实现图片上传预览功能
2019/12/23 Javascript
Pycharm设置界面全黑的方法
2018/05/23 Python
浅析python3字符串格式化format()函数的简单用法
2018/12/07 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
Django框架文件上传与自定义图片上传路径、上传文件名操作分析
2019/05/10 Python
HTML5自定义元素播放焦点图动画的实现
2019/09/25 HTML / CSS
美国杂志订阅折扣与优惠网站:Magazines.com
2016/08/31 全球购物
经济信息管理专业大学生求职信
2013/09/27 职场文书
道德模范先进事迹
2014/02/14 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
党支部培养考察意见
2015/06/02 职场文书
《我是什么》教学反思
2016/02/16 职场文书
用Python实现Newton插值法
2021/04/17 Python
python 三边测量定位的实现代码
2021/04/22 Python
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android
Android开发手册自定义Switch开关按钮控件
2022/06/10 Java/Android