对子项运行多个XPath查询或对整个HTML文档执行一些XPath查询? (PHP)

问题描述 投票:1回答:1

我想使用DOM解析和XPath来抓取一个网站。 HTML页面有128个结果。

是否更好的是在整个HTML上运行一个XPath查询,然后在结果上运行许多XPath查询:

$video_urls = $xpath->query('//div[contains(@class, "vid")]/a/@href');
foreach($videos as $video) {
    $video_url = $xpath->query('./a/@href', $video)->item(0)->nodeValue;
    $thumb = $xpath->query('./a/img/@src', $video)->item(0)->nodeValue;
    $title = $xpath->query('./a/img/@alt', $video)->item(0)->nodeValue;
}

或者在整个HTML上运行4个XPath查询:

$videos = $xpath->query('//div[contains(@class, "vid")]');
$video_urls = $xpath->query('//div[contains(@class, "vid")]/a/@href');
$thumbs = $xpath->query('//div[contains(@class, "vid")]/a/img/@src');
$titles = $xpath->query('//div[contains(@class, "vid")]/a/img/@alt');
php html dom xpath
1个回答
0
投票

如第二个示例所示,不那么频繁地查询DOM应该更快。但这并不意味着什么,最终,这取决于您的要求。我怀疑真正的单词执行时间差别不大,是吗?

但是,从您的示例中猜测,这种方法有一个问题:假设所有四个查询具有相同数量的结果,并且当您稍后迭代它们时,数组中的给定索引保存从同一DOM元素中报废的信息。如果情况并非如此,则会导致各种混淆。

可以说第一种方法更容易掌握,并且可能不易出错,但会带来性能损失 - 这有关系吗?

© www.soinside.com 2019 - 2024. All rights reserved.