首页 文章

simple_html_dom可以更快地检索

提问于
浏览
1

我正在尝试使用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

    我不确定速度,但是你可以做类似的事情,而不是做 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")->item(0)->nodeValue;
    echo $content;
    
  • 0

    最快的将是:

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

相关问题