R 从子页面查找通讯作者

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

我一直在努力逐步解决从collections_html_subpages中找到通讯作者的问题。

我检查了该网站,发现这是一个

html r web-scraping httr
1个回答
0
投票

您创建的文章 URL 不是该 Web 服务器上的有效路径。当您

paste()
prefix_str_1
a_href
时,第一个以
/
结尾,后者以
/
开头,生成的 URL 如下所示:
https://molecularbrain.biomedcentral.com/articles//10.1186/s13041-023-01014-0
;正确的 URL 是
https://molecularbrain.biomedcentral.com/articles/10.1186/s13041-023-01014-0
(文章后面没有双
/
)。

最简单的解决方法是定义

prefix_str_1
,不带尾部
/

prefix_str_1 <- "https://molecularbrain.biomedcentral.com"

您还可以显着简化您的代码。

library(rvest) 

base_url <- "https://molecularbrain.biomedcentral.com"

index_html <- read_html(file.path(base_url, "articles"))

# Title and Links ---------------------------------------------------------

a_elements <- html_elements(index_html, "h3.c-listing__title a")
a_href <- html_attr(a_elements, "href")
a_text <- html_text(a_elements)

# subpages ----------------------------------------------------------------

html_sub_pages <- 
  lapply(paste0(base_url, a_href),
       read_html)

# Correspondence Author ---------------------------------------------------

lapply(html_sub_pages,
       html_elements,
       "#corresp-c1") |> 
  lapply(html_text)
#> [[1]]
#> [1] "Chao Qin"
#> 
#> [[2]]
#> [1] "Won Do Heo"
#> 
#> [[3]]
#> [1] "Seung-Jae Lee"
#> ...
© www.soinside.com 2019 - 2024. All rights reserved.