我想用Rvest下载一个隐藏在网站上 "下载完整数据库 "链接后面的.csv。http:/friedmanlab.weizmann.ac.ilMcPAS-TCR。
然而,当在chrome中使用检查元素时,href链接在加载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]将是我想选择的索引,然后抓取href。
是否可以与这个网站建立连接,等待href属性出现,然后再抓取下载链接?我读到过Sys.sleep(),所以如果我可以加载网站,然后等待,再获取href,也许就可以了。
谢谢你,这是我的第一篇帖子,所以我为任何错误道歉! 我很感谢你的帮助。
好吧,我想明白了。结合使用rselenium和rvest,并等待至少15秒,让R shiny服务器放弃链接。
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)