2011-12-02 70 views
0

我需要從html頁面讀取一些內容。 我測試過simple_html_dom,但它根本不適用於我需要的東西。我在哪裏可以找到一個DOM解析器?

我需要的是這樣的(基於simple_html_dom pseaudo語法):

$html = file_get_contents($url); 
$html_obj = parse_html($html); 

$title = $html_obj->get('title'); 
$meta1 = $html_obj->get('meta[name=description]', 'innertext']; //text only 
$meta2 = $html_obj->get('meta[name=keywords]', 'innertext']; // text only 
$content = $html_obj->get('div[id=section_a]', outerText); //html code 

我已經在很多方面進行測試simple_html_dom,只有設法得到什麼,我需要的部分。 它根本不是「簡單」。

我也測試過PHP DOMDocument::loadHTML,但它遇到了處理內聯<script>的問題。

有沒有任何PHP圖書館,使得它容易得到jQuery內容?

更新

我的一個問題是一塊第三方的javascript中的附加機構:

<script language="javascript" type="text/javascript"> 
     <!-- 
     if (window.adgroupid == undefined) { 
      window.adgroupid = Math.round(Math.random()*100000); 
     } 
     document.write('<scr'+'ipt language="javascript1.1" type="text/javascript" src="http://adserver.adtech.de/addyn|3.0|994|3159100|0|-1|size=980x150|ADTECH;loc=100;target=_blank;key=startside,kvinner, kvinnesak, bryllup, graviditet, mamma, kosmetikk, markedsplass, dagbok, feminisme;grp='+window.adgroupid+';misc='+new Date().getTime()+'"></scri'+'pt>'); 
     //--> 
     </script> 

即使我改變<scr'+'ipt<script它給了我無效的JavaScript代碼。

+0

服務器jquery的操作HTML端DOM庫通常使用XPath,而不是jQuery使用的僞css選擇。我相信這個選擇最終會變成'// meta [@ name =「description」]' – zzzzBov

+1

您可以詳細說明'問題'嗎? –

+0

@Digital Precision,看我更新的文本 – Steven

回答

2

您可以使用DOM文檔與DOMXPath ..

<?php 
$DOMDocument = new DOMDocument(); 
//libxml_use_internal_errors (true) ; 
$DOMDocument->loadHTMLFile ('http://www.iconfinder.com') ; 
$XPath = new DOMXPath($DOMDocument); 

$title = $DOMDocument->getElementsByTagName('title')->item(0)->nodeValue; 
echo $title ; 

#$desc = $XPath->query('//meta[@name=description]')->item(0)->getAttribute ('content'); 
#$keywords = $XPath->query('//meta[@name=keywords]')->item(0)->getAttribute('content'); 
#$content = $XPath->query('//div[@id=section_a]')->item(0)->nodeValue; 
+0

謝謝 - 我會試試這個! – Steven

+0

查看更新的問題。由於內嵌JavaScript,我無法播放html代碼。你知道我該如何解決這個問題嗎? – Steven

1

PHPQuery(http://code.google.com/p/phpquery/),您可以通過類似的語法

+0

+1我以前用過PHPQuery,喜歡它的熟悉程度。 – Sampson

相關問題