RStudio中使用XPath访问特定分类时返回全量赛事名称问题
问题原因
代码里的XPath写法存在范围错误:当你已经选中足球分类对应的<li class='sport code_sport-1'>节点后,后续html_nodes()传入的XPath是//span[@class='titulo'],开头的*//*语法代表从整个HTML文档根节点全局匹配所有符合规则的节点,不会把查找范围限定在之前选中的足球分类节点内,所以最终会返回全站所有赛事的标题,而不是仅足球分类下的比赛名称。
修正方法
将匹配span节点的XPath开头改为*.//*,这个写法代表从当前已选中的节点(即足球分类对应的li节点)向下递归查找匹配元素,就能把查找范围严格限定在足球分类下。
修正后可正常运行的代码:
library(rvest) library(tidyverse) library(xml2) html="https://www.supermatch.com.uy/live_recargar_menu/" a <- rvest::read_html(html) b2 <- a %>% html_node("body") %>% html_node(xpath="//li[@class='sport code_sport-1']") %>% html_nodes(xpath=".//span[@class='titulo']") %>% html_text()
额外提示
所有需要在已选中节点范围内做XPath查找的场景,都要在路径前加.表示相对当前节点查找,不加.的//默认是全局查找,很容易出现匹配范围超出预期的问题。
内容的提问来源于stack exchange,提问作者Emiliano Barone
相关产品推荐
相关产品推荐

