2013-07-18 83 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;