phpQuery—基於jQuery的PHP實現


Query的選擇器之強大是有目共睹的,phpQuery 讓php也擁有了這樣的能力,它就相當於服務端的jQuery。

先來看看官方簡介:

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).

 

存在的意義

我們有時需要抓取一個網頁的內容,但只需要特定部分的信息,通常會用正則來解決,這當然沒有問題。正則是一個通用解決方案,但特定情況下,往往有更簡單快 捷的方法。比如你想查詢一個編程方面的問題,當然可以使用Google,但stackoverflow 作為一個專業的編程問答社區,會提供給你更多,更靠譜的答案。

對於html頁面,不應該使用正則的原因主要有3個

1、編寫條件表達式比較麻煩 
尤其對於新手,看到一堆”不知所雲”的字符評湊在一起,有種腦袋都要炸了的感覺。如果要分離的對象沒有太明顯的特征,正則寫起來更是麻煩。

2、效率不高 
對於php來說,正則應該是沒有辦法的辦法,能通過字符串函數解決的,就不要勞煩正則了。用正則去處理一個30多k的文件,效率不敢保證。

3、有phpQuery 
如果你使用過jQuery,想獲取某個特定元素應該是輕而易舉的事情,phpQuery讓這成為了可能。

 

淺析phpQuery

phpQuery是基於php5新添加的DOMDocument。而DOMDocument則是專門用來處理html/xml。它提供了強大xpath選 擇器及其他很多html/xml操作函數,使得處理html/xml起來非常方便。那為什么不直接使用呢?這個,去看一下官網的函數列表 就知道了,如果對自己的記憶力很有信心, 不妨一試。

 

幾個簡單的例子

 

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

 

  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?

 

 

http://www.cnblogs.com/in-loading/archive/2012/04/11/2442697.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM