phpQuery—基於jQuery的PHP實現

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

phpQuery是基於php5新添加的DOMDocument。而DOMDocument則是專門用來處理html/xml。它提供了強大xpath選 擇器及其餘不少html/xml操做函數,使得處理html/xml起來很是方便。那爲何不直接使用呢?這個,去看一下官網的函數列表 就知道了,若是對本身的記憶力頗有信心, 不妨一試。google

 

幾個簡單的例子

 

獲取藍色理想最熱的招聘職位

 

  1. <?  

  2. include 'phpQuery.php';  

  3. phpQuery::newDocumentFile('http://job.blueidea.com');  

  4. $companies = pq('#hotcoms .coms')->find('div');  

  5. foreach($companies as $company)  

  6. {  

  7.    echo pq($company)->find('h3 a')->text()."<br>";  

  8. }  

 

小結

  • pq()就像jQuery裏的$()

  • 基本上jQuery的選擇器均可以用在phpQuery上,只要把’.'變成’->’

  • phpQuery提供了好幾種載入文件的方法,有的使用字符串,有的使用文件(包括url),選 擇的時候要注意

  • 基本上這一頁 就很能說明問題了

其餘解析器

simplehtmldom 也是個不錯的html解析器,使用起來也挺方便,是基 於正則的,因此沒有phpQuery那麼強大,若是沒有過高的要求,也基本夠用了。

yql 是yahoo出的一款使用相似SQL的語言,來獲取相應的數據,也很強大,無須任何類 庫,能夠直接調用,支持xpath,若是對SQL語句比較熟悉的話,能夠考慮yql。

>>QueryPath, php上的jQuery

-----------------------------------------------------

在網頁採集的時候,一般都會用到正則表達式。可是有時候對於正則不太好的同窗,好比我,那就杯具了。。現在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?

相關文章
相關標籤/搜索