Query的選擇器之強大是有目共睹的,phpQuery 讓php也擁有了這樣的能力,它就至關於服務端的jQuery。php
先來看看官方簡介:html
phpQuery is a server-side, chainable, CSS3 selector driven Document Object Model (DOM) API based on jQuery JavaScript Library.jquery
Library is written in PHP5 and provides additional Command Line Interface (CLI).正則表達式
咱們有時須要抓取一個網頁的內容,但只須要特定部分的信息,一般會用正則來解決,這固然沒有問題。正則是一個通用解決方案,但特定狀況下,每每有更簡單快 捷的方法。好比你想查詢一個編程方面的問題,固然可使用Google,但stackoverflow 做爲一個專業的編程問答社區,會提供給你更多,更靠譜的答案。編程
對於html頁面,不該該使用正則的緣由主要有3個服務器
一、編寫條件表達式比較麻煩
尤爲對於新手,看到一堆」不知所云」的字符評湊在一塊兒,有種腦殼都要炸了的感受。若是要分離的對象沒有太明顯的特徵,正則寫起來更是麻煩。dom
二、效率不高
對於php來講,正則應該是沒有辦法的辦法,能經過字符串函數解決的,就不要勞煩正則了。用正則去處理一個30多k的文件,效率不敢保證。ide
三、有phpQuery
若是你使用過jQuery,想獲取某個特定元素應該是垂手可得的事情,phpQuery讓這成爲了可能。函數
phpQuery是基於php5新添加的DOMDocument。而DOMDocument則是專門用來處理html/xml。它提供了強大xpath選 擇器及其餘不少html/xml操做函數,使得處理html/xml起來很是方便。那爲何不直接使用呢?這個,去看一下官網的函數列表 就知道了,若是對本身的記憶力頗有信心, 不妨一試。google
獲取藍色理想最熱的招聘職位
<?
include 'phpQuery.php';
phpQuery::newDocumentFile('http://job.blueidea.com');
$companies = pq('#hotcoms .coms')->find('div');
foreach($companies as $company)
{
echo pq($company)->find('h3 a')->text()."<br>";
}
pq()就像jQuery裏的$()
基本上jQuery的選擇器均可以用在phpQuery上,只要把’.'變成’->’
phpQuery提供了好幾種載入文件的方法,有的使用字符串,有的使用文件(包括url),選 擇的時候要注意
基本上這一頁 就很能說明問題了
simplehtmldom 也是個不錯的html解析器,使用起來也挺方便,是基 於正則的,因此沒有phpQuery那麼強大,若是沒有過高的要求,也基本夠用了。
yql 是yahoo出的一款使用相似SQL的語言,來獲取相應的數據,也很強大,無須任何類 庫,能夠直接調用,支持xpath,若是對SQL語句比較熟悉的話,能夠考慮yql。
-----------------------------------------------------
在網頁採集的時候,一般都會用到正則表達式。可是有時候對於正則不太好的同窗,好比我,那就杯具了。。現在google的項目裏有個phpQuery , 顧名思義query,徹底相似於jquery的語法,但這是服務器端的,整體來講就是能夠用php來直接採集對應的網頁內容了,真的是太方便了, 它讓一切變得可能......
phpQuery is a server-side, chainable, CSS3 selector driven Document Object Model (DOM) API based on jQuery JavaScript Library.
Library is written in PHP5 and provides additional Command Line Interface (CLI).
項目下載地址:http://code.google.com/p/phpquery/
若是你使用過jQuery,你會發現這一切是如此的相象。
如何快速方便的獲取到網頁的 title?