R语言无需RSelenium如何爬取Wiley页面的稿件接收日期
解决方案
核心逻辑是直接请求Wiley加载出版历史的后端接口,无需模拟点击,比RSelenium轻量很多。
问题原因
直接请求DOI主页面拿不到数据,是因为出版历史属于异步加载内容,不会嵌入初始返回的HTML源码中,只有点击Information标签时,前端才会单独请求对应接口拉取数据。
实现代码
library(rvest) library(httr) # 定义目标DOI target_doi <- "10.1002/jcc.26717" # 拼接出版历史接口地址,规则为固定前缀 + DOI + 固定后缀 hist_url <- paste0("https://onlinelibrary.wiley.com/doi/full/", target_doi, "/publication-history") # 请求接口并解析内容 page <- GET(hist_url) %>% read_html() # 提取接收日期:模糊匹配包含接收标识的文本,避免固定索引因文章出版项数量不同失效 received_date <- page %>% html_elements(".publication-history li") %>% html_text() %>% grep("Received|Manuscript Received", ., value = TRUE) # 整理结果 wiley_output <- data.frame( doi = target_doi, manuscript_received_date = received_date, stringsAsFactors = FALSE )
注意事项
- 无需拼接#pane-pcw-details锚点,直接请求上述拼接的接口即可拿到完整出版历史数据
- 不要用nth-child(5)固定索引取值,不同文章的出版历史条目数量、排序可能有差异,用关键词匹配的兼容性更强
- 批量爬取时注意控制请求频率,避免触发反爬限制
内容的提问来源于stack exchange,提问作者Rom
相关产品推荐
相关产品推荐

