simple_html_dom可以更快地检索

时间:2013-07-18 14:02:29

标签: php simple-html-dom

我正在尝试使用simple_html_dom进行一些网页抓取。但我只想要一个span元素的内部文本。我必须为此加载整个页面吗?由于我在循环中运行它需要花费很多时间。有哪些其他替代方案可以更快地完成此任务?

以下是我现在正在做的事情 -

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

如果在循环中使用它,则速度太慢。更快的方法吗?

3 个答案:

答案 0 :(得分:0)

您可以尝试以下内容:

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

答案 1 :(得分: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";
    }
  }
?>

答案 2 :(得分:0)

最快的将是:

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