2013-07-18 45 views
1

我想用simple_html_dom做一些網頁抓取。但我只想要一個span元素的內部文本。我必須爲此加載整個頁面嗎?從循環中運行它需要很長時間。還有什麼其他方法可以更快地完成這項工作simple_html_dom快速檢索

下面是我在做什麼現在 -

$html = file_get_html($url); 
foreach($html->find('span') as $element) { 
    if($element->innertext=="some text") { 
     $html->clear(); 
     unset($html); 
     break; 
    } 
    else { 
     //do something 
     } 

,如果這是一個循環內使用該太慢。更快的方式來做到這一點?

+0

你測試了兩個給出的答案,以下是否?如果你做到了,你能向我們提供績效結果嗎? – RMK

回答

0

你可以給以下嘗試:

$dom = new DOMDocument(); 
$dom->loadHTMLFile($url); 
$xpath = new DOMXPath($dom); 
$content = $xpath->query("//span")->item(0)->nodeValue; 
echo $content; 
+0

關閉,但它沒有解決問題。 – pguardiario

0

我不知道有關的速度,但是在做foreach循環,你可以做這樣的事情

$html->find($selector, $idx)

<?php 
    $html = file_get_html($url); 
    if (is_object($html)) { 
    if ($span = $html->find("span", 0)) { 
     $span->innertext = "some text"; 
    } 
    } 
?> 
0

最快將會是:

$dom = new DOMDocument(); 
$dom->loadHTMLFile($url); 
$xpath = new DOMXPath($dom); 
$content = $xpath->query("//span[contains(text(), 'some text')]")->item(0)->nodeValue;