首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在childs上运行多个XPath查询,还是在整个XPath文档上运行一些XPath查询?(PHP)

在childs上运行多个XPath查询,还是在整个XPath文档上运行一些XPath查询?(PHP)
EN

Stack Overflow用户
提问于 2018-09-15 13:45:21
回答 1查看 36关注 0票数 1

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

最好在整个XPath上运行一个XPath查询,然后对结果运行多个XPath查询:

代码语言:javascript
复制
$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查询:

代码语言:javascript
复制
$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');
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-16 04:58:51

查询DOM的次数较少,如第二个示例所示,应该更快。但这并不意味着什么,最终取决于您的需求。我怀疑真正的执行时间并没有太大的不同,是吗?

但是,从您的示例中猜测,这种方法有一个陷阱:假设所有四个查询都有相同数量的结果,并且数组中给定的索引保存在以后迭代时从同一个DOM元素中删除的信息。如果情况并非总是如此,这将导致各种混乱。

可以说,第一种方法更容易掌握,而且不太容易出错,但会带来性能上的损失--这重要吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52345273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档