搜索本网站的术语列表,即使缺少任何一个术语,nostop也是如此

时间:2011-05-20 02:51:32

标签: list r

我正在尝试使用RCurl包从genecard数据库中获取数据

http://www-bimas.cit.nih.gov/cards//

我在之前发布的问题中阅读了一个很棒的解决方案:

How can I use R (Rcurl/XML packages ?!) to scrape this webpage?

但是,我的问题在于我需要经验者进一步支持的形式。而不是从网页上提取所有链接。我脑海中列出了大约1000个基因。它们是基因符号的形式(一些基因符号可以在网页中找到,其中一些是数据库的新内容)。这是我的基因列表的一部分。

TP53 SOD1 EGFR C2D AKT2 NFKB1

C2d不在数据库中,因此,当我手动进行搜索时,我会看到。 “对不起,C2d没有GeneCard。”

当我使用上一个问题中发布的解决方案进行分析时。

How can I use R (Rcurl/XML packages ?!) to scrape this webpage?

(1)我首先阅读列表

(2)然后我使用上一个解决方案中的get_structs函数将列表中的每个基因sybmols替换到以下网站 http://www-bimas.cit.nih.gov/cgi-bin/cards/carddisp.pl?gene=genesybol

(3)使用上一条消息中的get_data_url函数,废弃列表中每个基因所需的信息。

它适用于TP53,SOD1,EGFR,但是当搜索到C2d时。这个过程停止了。

当我得到~1000个基因时,我确信它们中的一些基因遗漏了。

如何获得修改后的基因列表告诉我~1000个基因,其中一个基因会自动丢失?那么,我可以使用上一个问题中列出的相同方法来获取我需要的所有数据,这些数据基于网页中存在的新基因列表?

或者是否有任何方法要求R跳过这些缺失的项目并连续进行报废直到列表末尾,但在最终结果中标记缺失的项目。

为了促进讨论过程。我使用脚本在前面的问题中使用脚本制作了一个sudo输入文件,用于他们使用的同一个网页。

u <- c ("Aero_pern", "Ppate", "didnotexist", "Sbico")

library(RCurl)  
base_url<-"http://gtrnadb.ucsc.edu/" base_html<-getURLContent(base_url)[[1]] 
links<-strsplit(base_html,"a href=")[[1]] 

get_structs<-function(u) {     
struct_url<-paste(base_url,u,"/",u,"-structs.html",sep="")     
raw_data<-getURLContent(struct_url)     
s_split1<-strsplit(raw_data,"<PRE>")[[1]]     
all_data<-s_split1[seq(3,length(s_split1))]     
data_list<-lapply(all_data,parse_genomes)     
for (d in 1:length(data_list)) {data_list[[d]]<-append(data_list[[d]],u)}     
return(data_list) 
}

我想这个问题可以通过修改上面的get_structs scripps来解决,或者ifelse函数可能会有所帮助,但我无法弄清楚如何进一步修改它。请评论。

1 个答案:

答案 0 :(得分:2)

您可以将函数调用封装在try()中,以便在出现错误时进程不会中断。通常,这将让您循环查看有问题的案例,它将返回错误消息,而不是破坏您的过程。 e.g。

dat <- list()
for (i in 1:length(u)){
   dat[[i]] <- try(get_structs(u[i]))
}