我正在尝试使用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
}
如果在循环中使用它,则速度太慢。更快的方法吗?
答案 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;