使用 Rvest 检索隐藏在超链接后面的 .csv 下载
Retrieve a .csv download hidden behind a hyperlink using Rvest
我正在尝试使用 Rvest 从以下网站下载隐藏在 "download the complete db" link 后面的 .csv:http://friedmanlab.weizmann.ac.il/McPAS-TCR/
然而,当在 chrome 中使用 inspect 元素时,href link 在加载 url 时需要一秒钟才能出现,因此在获取该数据时,不会使用 href进入输出。
library(dplyr)
library(rvest)
page <- read_html("http://friedmanlab.weizmann.ac.il/McPAS-TCR/")
page %>% html_nodes("a")
输出:
[1] <a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button">\n <span class="sr-only">Toggle navigat ...
[2] <a href="#tab-5712-1" data-toggle="tab" data-value="1">Home</a>
[3] <a href="#tab-5712-2" data-toggle="tab" data-value="2">Search Database</a>
[4] <a href="#tab-5712-3" data-toggle="tab" data-value="3">Help</a>
[5] <a href="#tab-5712-4" data-toggle="tab" data-value="About">About</a>
[6] <a id="downloadDB" class="btn btn-default shiny-download-link " href="" target="_blank">\n <i ...
[7] <a href="#tab-7476-1" data-toggle="tab" data-value="FreeText">Enter Query</a>
[8] <a href="#tab-7476-2" data-toggle="tab" data-value="file_upload">Or: upload file</a>
[9] <a id="saveCSV" class="btn btn-default shiny-download-link " href="" target="_blank">\n <i class ...
[10] <a href="#dbglossary">Database Glossary</a>
[11] <a href="#analysis_examples">Usage examples</a>
[12] <a href="#dbsearch">How to search the database</a>
[13] <a href="#additionalResources">Additional resources</a>
[14] <a name="dbglossary">Database Glossary</a>
[15] <a href="http://www.uniprot.org/uniprot/">http://www.uniprot.org/uniprot/</a>
[16] <a href="http://www.iedb.org/">www.iedb.org</a>
[17] <a href="http://www.ncbi.nlm.nih.gov/pubmed" target="_blank">http://www.ncbi.nlm.nih.gov/pubmed</a>
[18] <a name="analysis_examples">Usage examples</a>
[19] <a id="dbsearch">How to search the database</a>
[20] <a name="additionalResources">Additional Resources</a>
[6] 将是我想要 select 的索引,然后获取 href。
是否可以与该网站建立连接,等待 href 属性出现,然后抓取并检索下载 link?我已经阅读了有关 Sys.sleep() 的信息,所以如果我可以加载该网站,然后等待,然后获取可用的 href。
谢谢,这是我的第一个 post 对于任何错误,我深表歉意!感谢您的帮助。
好的,我明白了。 rselenium 和 rvest 的组合,等待至少 15 秒让 R shiny 服务器放弃 link
library(RSelenium)
library(rvest)
url <- "http://friedmanlab.weizmann.ac.il/McPAS-TCR/"
#connect to server
rd <- RSelenium::rsDriver(browser = "firefox")
#set client
remDr <- rd$client
#navigate to url
remDr$navigate(url)
#need to wait 15s at least for the href to appear
Sys.sleep(15)
#reading the html page
ext <- xml2::read_html(remDr$getPageSource()[[1]]) %>%
#selecting for links
html_nodes("a") %>%
#getting those of attr href
html_attr("href") %>%
#the link allways includes the word session
stringr::str_subset("session")
#read in the csv
mc_db <- read.csv(paste0(url, ext), stringsAsFactors = FALSE)
我正在尝试使用 Rvest 从以下网站下载隐藏在 "download the complete db" link 后面的 .csv:http://friedmanlab.weizmann.ac.il/McPAS-TCR/
然而,当在 chrome 中使用 inspect 元素时,href link 在加载 url 时需要一秒钟才能出现,因此在获取该数据时,不会使用 href进入输出。
library(dplyr)
library(rvest)
page <- read_html("http://friedmanlab.weizmann.ac.il/McPAS-TCR/")
page %>% html_nodes("a")
输出:
[1] <a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button">\n <span class="sr-only">Toggle navigat ...
[2] <a href="#tab-5712-1" data-toggle="tab" data-value="1">Home</a>
[3] <a href="#tab-5712-2" data-toggle="tab" data-value="2">Search Database</a>
[4] <a href="#tab-5712-3" data-toggle="tab" data-value="3">Help</a>
[5] <a href="#tab-5712-4" data-toggle="tab" data-value="About">About</a>
[6] <a id="downloadDB" class="btn btn-default shiny-download-link " href="" target="_blank">\n <i ...
[7] <a href="#tab-7476-1" data-toggle="tab" data-value="FreeText">Enter Query</a>
[8] <a href="#tab-7476-2" data-toggle="tab" data-value="file_upload">Or: upload file</a>
[9] <a id="saveCSV" class="btn btn-default shiny-download-link " href="" target="_blank">\n <i class ...
[10] <a href="#dbglossary">Database Glossary</a>
[11] <a href="#analysis_examples">Usage examples</a>
[12] <a href="#dbsearch">How to search the database</a>
[13] <a href="#additionalResources">Additional resources</a>
[14] <a name="dbglossary">Database Glossary</a>
[15] <a href="http://www.uniprot.org/uniprot/">http://www.uniprot.org/uniprot/</a>
[16] <a href="http://www.iedb.org/">www.iedb.org</a>
[17] <a href="http://www.ncbi.nlm.nih.gov/pubmed" target="_blank">http://www.ncbi.nlm.nih.gov/pubmed</a>
[18] <a name="analysis_examples">Usage examples</a>
[19] <a id="dbsearch">How to search the database</a>
[20] <a name="additionalResources">Additional Resources</a>
[6] 将是我想要 select 的索引,然后获取 href。
是否可以与该网站建立连接,等待 href 属性出现,然后抓取并检索下载 link?我已经阅读了有关 Sys.sleep() 的信息,所以如果我可以加载该网站,然后等待,然后获取可用的 href。
谢谢,这是我的第一个 post 对于任何错误,我深表歉意!感谢您的帮助。
好的,我明白了。 rselenium 和 rvest 的组合,等待至少 15 秒让 R shiny 服务器放弃 link
library(RSelenium)
library(rvest)
url <- "http://friedmanlab.weizmann.ac.il/McPAS-TCR/"
#connect to server
rd <- RSelenium::rsDriver(browser = "firefox")
#set client
remDr <- rd$client
#navigate to url
remDr$navigate(url)
#need to wait 15s at least for the href to appear
Sys.sleep(15)
#reading the html page
ext <- xml2::read_html(remDr$getPageSource()[[1]]) %>%
#selecting for links
html_nodes("a") %>%
#getting those of attr href
html_attr("href") %>%
#the link allways includes the word session
stringr::str_subset("session")
#read in the csv
mc_db <- read.csv(paste0(url, ext), stringsAsFactors = FALSE)