html_attr "href" 不提取 link
html_attr "href" does not extract link
我想在此处下载“档案”选项卡中文本为“模块 4”的文件:
https://www.g-ba.de/bewertungsverfahren/nutzenbewertung/5/#dossier
首先我想获得link。
我的代码如下:
"https://www.g-ba.de/bewertungsverfahren/nutzenbewertung/5/#dossier" %>%
read_html %>%
html_nodes(".gba-download__text") %>%
.[[4]] %>%
html_attr("href")
(我知道 .[[4]]
不是很好,这不是我的完整代码。)
这导致 NA
,我不明白为什么。
类似问题在这里无济于事。
使用xpath
更容易到达特定节点:
library(rvest)
"https://www.g-ba.de/bewertungsverfahren/nutzenbewertung/5/#dossier" %>%
read_html %>%
html_nodes(xpath = "//span[contains(text(),'Modul 4')]/..") %>%
.[[1]] %>%
html_attr("href")
#> [1] "/downloads/92-975-67/2011-12-05_Modul4A_Apixaban.pdf"
艾伦已经留下了简洁的答案。但是让我换一种方式。如果查看页面源,可以看到目标在 .gba-download-list
中。 (实际上有两个。)因此,获取该部分并向下走到 href
部分。获得 url 后,您可以使用 grep()
来识别包含 Modul4
的 link。我最后用 unique()
来删除一个骗局。
read_html("https://www.g-ba.de/bewertungsverfahren/nutzenbewertung/5/#dossier") %>%
html_nodes(".gba-download-list") %>%
html_nodes("a") %>%
html_attr("href") %>%
grep(pattern = "Modul4", value = TRUE) %>%
unique()
[1] "/downloads/92-975-67/2011-12-05_Modul4A_Apixaban.pdf"
我现在有另一个解决方案,想分享一下:
"https://www.g-ba.de/bewertungsverfahren/nutzenbewertung/5/#dossier" %>%
read_html %>%
html_nodes("a.download-helper") %>%
html_attr("href") %>%
.[str_detect(., "Modul4")] %>%
unique
使用带有 contains 运算符的 css 选择器按子字符串定位 href 会更快。另外,只需要返回单节点匹配
library(rvest)
url <- "https://www.g-ba.de/bewertungsverfahren/nutzenbewertung/5/#dossier"
link <- read_html(url) %>%
html_node("[href*='Modul4']") %>%
html_attr("href") %>% url_absolute(url)
我想在此处下载“档案”选项卡中文本为“模块 4”的文件:
https://www.g-ba.de/bewertungsverfahren/nutzenbewertung/5/#dossier
首先我想获得link。 我的代码如下:
"https://www.g-ba.de/bewertungsverfahren/nutzenbewertung/5/#dossier" %>%
read_html %>%
html_nodes(".gba-download__text") %>%
.[[4]] %>%
html_attr("href")
(我知道 .[[4]]
不是很好,这不是我的完整代码。)
这导致 NA
,我不明白为什么。
类似问题在这里无济于事。
使用xpath
更容易到达特定节点:
library(rvest)
"https://www.g-ba.de/bewertungsverfahren/nutzenbewertung/5/#dossier" %>%
read_html %>%
html_nodes(xpath = "//span[contains(text(),'Modul 4')]/..") %>%
.[[1]] %>%
html_attr("href")
#> [1] "/downloads/92-975-67/2011-12-05_Modul4A_Apixaban.pdf"
艾伦已经留下了简洁的答案。但是让我换一种方式。如果查看页面源,可以看到目标在 .gba-download-list
中。 (实际上有两个。)因此,获取该部分并向下走到 href
部分。获得 url 后,您可以使用 grep()
来识别包含 Modul4
的 link。我最后用 unique()
来删除一个骗局。
read_html("https://www.g-ba.de/bewertungsverfahren/nutzenbewertung/5/#dossier") %>%
html_nodes(".gba-download-list") %>%
html_nodes("a") %>%
html_attr("href") %>%
grep(pattern = "Modul4", value = TRUE) %>%
unique()
[1] "/downloads/92-975-67/2011-12-05_Modul4A_Apixaban.pdf"
我现在有另一个解决方案,想分享一下:
"https://www.g-ba.de/bewertungsverfahren/nutzenbewertung/5/#dossier" %>%
read_html %>%
html_nodes("a.download-helper") %>%
html_attr("href") %>%
.[str_detect(., "Modul4")] %>%
unique
使用带有 contains 运算符的 css 选择器按子字符串定位 href 会更快。另外,只需要返回单节点匹配
library(rvest)
url <- "https://www.g-ba.de/bewertungsverfahren/nutzenbewertung/5/#dossier"
link <- read_html(url) %>%
html_node("[href*='Modul4']") %>%
html_attr("href") %>% url_absolute(url)