2013-06-18 39 views
1

標籤我有一個http://www.statistics.com/index.php?page=glossary&term_id=703PHP簡單的HTML DOM解析器,發現裏面有沒有類,也沒有編號

特別是在這些部分的文字:

<b>Additive Error:</b> 
<p> Additive error is the error that is added to the true value and does not 
depend on the true value itself. In other words, the result of the measurement is 
considered as a sum of the true value and the additive error: </p> 

我盡我所能得到的標籤之間的文本<p></p>,與此:

include('simple_html_dom.php'); 
$url = 'http://www.statistics.com/index.php?page=glossary&term_id=703'; 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
$curl_scraped_page = curl_exec($ch); 
$html = new simple_html_dom(); 
$html->load($curl_scraped_page); 

foreach ($html->find('b') as $e) { 
echo $e->innertext . '<br>'; 
} 

它給我:

Additive Error: 
Browse Other Glossary Entries 

我試圖在foreach更改爲:foreach ($html->find('b p') as $e) {

然後foreach ($html->find('/b p') as $e) {

然後,它只是不斷給我什麼,但空白頁。 我做錯了什麼? 謝謝。

回答

1

爲什麼不使用PHP的內置DOM擴展和xpath?

libxml_use_internal_errors(true); // <- you might needs this if that page has errors 
$dom = new DomDocument(); 
$dom->loadHtml($curl_scraped_page); 
$xpath = new DomXPath($dom); 
print $xpath->evaluate('string(//p[preceding::b]/text())'); 
//       ^
// this will get you text content from <p> tags preceded by <b> tags 

如果有通過<b>的preceeded多個<p>標籤,並希望得到的只是第一個,調整XPath查詢:

string((//p[preceding::b]/text())[1]) 

讓他們都爲DOMNodeList,請輸入string()功能://p[preceding::b]/text()然後您可以迭代列表並訪問每個節點的textContent屬性...

+0

哦,我的天,你救了我的命!非常感謝你。再次感謝。 – Fii

+0

嘿,我還有一個問題。我想從其他頁面進行解析,但是我讀到了在刪除前一個頁面之前我們無法創建新對象。我的問題是:在創建一個'simple_html_dom'對象之前,如何刪除$ dom?謝謝,, – Fii

+0

通過給變量分配一個新的對象,例如'$ dom = new DomDocument()'......但是爲什麼直接使用「simple_html_dom」而不是直接使用DomDocument? –

0

如果您想要b或p標籤內的所有內容,您可以簡單地執行foreach ($html->find('b,p') as $e) { ... }

+0

不,我只是想在上面的p標籤裏面的文字,只有一個..我該怎麼辦? – Fii

+0

如果你只是想要那個,我懷疑你可能是有點擰。我會幫你,但我不知道如何。 –

+0

是的,你說得對。我搞砸了,:(我已經在這件事上很長時間了,但是我一直沒有注意到代碼,你認爲有可能這樣做嗎? – Fii

0

試試這個

<?php 
$dom = new DOMDocument(); 
@$dom->loadHTMLFile('http://www.statistics.com/index.php?page=glossary&term_id=703'); 
$xpath = new DOMXPath($dom); 

$mytext = ''; 
foreach($xpath->query('//font') as $font){ 
    $mytext = $xpath->query('.//p', $font)->item(0)->nodeValue; 
    break; 
} 

echo $mytext; 
?> 
+0

我只想把上面那個p標籤裏面的文字,只有一個..我該怎麼辦? – Fii

相關問題