2010-11-03 65 views
3

我正在建立一個系統,我需要抓住一個網頁的內容與PHP,然後解析它來提取某些表等。有沒有一種簡單的方法用jQuery來做到這一點,或者最好的方法是編寫PHP函數來提取數據?抓住一個PHP的網站,然後遍歷它與jQuery

+0

這可能也有幫助:http://stackoverflow.com/questions/292926/ – mdo 2010-11-03 20:54:25

回答

7

jQuery與PHP無關,無法在沒有瀏覽器的情況下運行,因此您在那裏運氣不佳。

但是,有phpQuery,允許使用jQuery的選擇器進行DOM解析!

+2

實際上,jQuery可以在沒有瀏覽器(Rhino,V8等)的情況下運行......但那不重要。這只是一個小附錄。 – Frankie 2010-11-03 20:09:23

+0

非常好,這就是我要找的!謝謝! – greenimpala 2010-11-03 20:21:41

1

你不能。 jQuery適用於JavaScript,它是客戶端,需要執行JavaScript引擎。

我建議你將HTML閱讀爲XML,但如果HTML不是XHTML有效的話,你會遇到各種各樣的麻煩。

0

這是真棒

http://sourceforge.net/projects/simplehtmldom/

例如:

// Create DOM from URL or file 
$html = file_get_html('http://www.google.com/'); 

// Find all images 
foreach($html->find('img') as $element) 
     echo $element->src . '<br>'; 

// Find all links 
foreach($html->find('a') as $element) 
     echo $element->href . '<br>'; 
+0

不要這樣做。我以前一直都在使用simplehtmldom,但糖蜜的速度很慢。使用內置的dom函數。它們快了一個數量級。這是一個基準來證明它:http://whitlock.ath.cx/FastCrawl/benchmark.php – 2010-11-03 20:08:41

+0

可以同意,但我有一些問題與DOM不想解析有時由於編碼問題(反正該文件是UTF-8) ..至少在我的本地主機上 – vertazzar 2010-11-03 20:19:56

3

做這樣的PHP中的PHP本身的DOM functions和XPath:

$dom = new DOMDocument(); 
    @$dom->loadHTML($html); 
    $x = new DOMXPath($dom); 
    // grab all tables with id of foo 
    foreach($x->query("//table[@id='foo']") as $node) 
    { 
     // here is the html 
        echo $node->c14n(); 
        // grab the containing text 
        echo $node->textContent() 
    } 
0

有幾個PHP包,可以幫助你,這個,curl,dom和xpath 。

這是a good tutorial我以前用過。