phpQuery 是一个基于 PHP 的服务端开源项目, 它可以让 PHP 开发人员轻松处理 DOM 文档内容, 比如获取某新闻网站的头条信息更有意思的是, 它采用了 jQuery 的思想, 你可以像使用 jQuery 一样处理页面内容, 获取你想要的页面信息
采集头条
先看一实例, 现在我要采集新浪网国内新闻的头条, 代码如下:
代码如下:
- include 'phpQuery/phpQuery.php';
- phpQuery::newDocumentFile('http://www.jb51.net');
- 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('http://www.jb51.net');
- $artlist = pq(".blog_li");
- foreach($artlist as $li){
- echo pq($li)->find('h2')->html()."";
- }
通过循环列表中的 DIV, 找出文章标题并输出, 就是这么简单
解析 XML 文档
假设现在有一个这样的 test.xml 文档:
代码如下:
张三
22
王五
18
现在我要获取名字为张三的联系人的年龄, 代码如下:
代码如下:
- 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/
来源: https://www.php1.cn/detail/php-d29a263ebe.html