如何从使用 R 从网站下载的文件中检索特定信息

How to retrieve specific information from a file downloaded from a website using R

我正在尝试将 DNA 序列从网页下载到 fastA 文件中。我正在下载 html 网页,但在获取 fasta 信息而不是 html 信息时遇到问题 对于那些非生物信息学家,fasta 文件看起来像这样

>DNA 序列名称

ACTGCGATGCGATGCAGCTAGCTGACG

(其中 ACTG 部分是 DNA 序列)

我无法弄清楚如何只提取我想要的行,所以我尝试了一种解决方法,即使用 read.fasta() 将网页数据读取为 fasta 文件,除了最后一行,无论我做什么,它总是打印一个非 DNA 句子。我已经尝试了一些正则表达式替换和 grep 来获得我想要的或删除我不想要的并且 none 到目前为止已经工作所以我不知道我做错了什么。

download.file("http://www.ng-mast.net/sql/fasta.asp?allele=POR",
              "webpage.txt", "auto", quiet=FALSE, mode = "w", 
               cacheOK = TRUE, headers = NULL)
lines <- readLines(con = "webpage.txt", encoding = "UTF-8")
fastadpor <- str_replace_all(lines, "[:print:]*&gt;POR", 
    ">POR_")
writeLines(fastadpor2, con = "portemp.fasta")
newfasta <- read.fasta(file = "portemp.fasta", as.string = 
    TRUE, forceDNAtolower = FALSE)
write.fasta(sequences = newfasta, names = names(newfasta), 
    file.out = "por.fasta")

输出文件末尾有“global sequence and ST database
”,不知道怎么去掉。

如果您只抓取网页的所需部分而不是整个网页,则最简单。这可以通过像 rvest 这样的包来完成,它可以让你 select 某些 HTML 元素。

library(rvest)

allele <- 
  read_html("http://www.ng-mast.net/sql/fasta.asp?allele=POR") %>% 
  html_node("textarea") %>% 
  html_text()


writeLines(allele, "fasta.txt")