phpQuery 是一款采用 php 开发的服务端项目,对于使用过 jQuery 的同学,可以很容易的使用 phpQuery,因为 phpQuery 采用了 jQuery 的思想,你可以像 jQuery 一样使用 CSS3 选择器处理页面内容,获取你想要的页面信。
phpQuery 是基于 php5 新添加的 DOMDocument 。而 DOMDocument 则是专门用来处理 html/xml 。它提供了强大 xpath 选 择器及其他很多 html/xml 操作函数,使得处理 html/xml 起来非常方便。

phpQuery 使用

1 、项目下载地址:https://code.google.com/p/phpquery/

2 、使用 phpquery 采集网站标题:

include 'phpQuery/phpQuery.php'; //导入 phpQuery 库
phpQuery::newDocumentFile('http://www.wpnoob.cn/');  //实例化
echo pq("title")->text();   //获取站点标题

是不是很简单,只需要三行代码,我们就可以快速采集网站的标题,出现中的 pq() 是一个功能强大的方法,跟 jQuery 的 $() 如出一辙,jQuery 的选择器基本上都能使用在 phpQuery 上,只要把 「.」 变成 「->」 。如上例中,pq(「title」) 网页的标题,如何使用 text() 函数输出网页标题的文本信息,我们还可以使用 jquery 中的 html() 等函数。
phpquery 除了可以解析普通的文本外,还可以解析 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> 

现在我们使用 phpQuery 获取名字为张三的联系人的年龄,代码如下:

include 'phpQuery/phpQuery.php';
phpQuery::newDocumentFile('test.xml');
echo pq('contact > age:eq(0)'); 

输出结果:18
phpQuery 可以很好应用在网站的采集上,而且使用也非常简单。
对于 html 页面,不应该使用正则的原因主要有 3 个

1 、编写条件表达式比较麻烦
尤其对于新手,看到一堆」 不知所云」 的字符评凑在一起,有种脑袋都要炸了的感觉。如果要分离的对象没有太明显的特征,正则写起来更是麻烦。

2 、效率不高
对于 php 来说,正则应该是没有办法的办法,能通过字符串函数解决的,就不要劳烦正则了。用正则去处理一个 30 多 k 的文件,效率不敢保证。

3 、有 phpQuery
如果你使用过 jQuery,想获取某个特定元素应该是轻而易举的事情,phpQuery 让这成为了可能。
项目地址:https://code.google.com/p/phpquery/
文档:https://code.google.com/p/phpquery/wiki/Selectors