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
        }

如果在循环中使用,这太慢了。更快的方法来做到这一点?

4

3 回答 3

0

最快的将是:

$dom = new DOMDocument();
$dom->loadHTMLFile($url);
$xpath = new DOMXPath($dom);
$content = $xpath->query("//span[contains(text(), 'some text')]")->item(0)->nodeValue;
于 2013-07-20T12:24:54.500 回答
0

您可以尝试以下方法:

$dom = new DOMDocument();
$dom->loadHTMLFile($url);
$xpath = new DOMXPath($dom);
$content = $xpath->query("//span")->item(0)->nodeValue;
echo $content;
于 2013-07-18T14:34:15.247 回答
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";
    }
  }
?>
于 2013-07-18T14:34:56.140 回答