首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >getURL工作慢

getURL工作慢
EN

Stack Overflow用户
提问于 2016-10-17 02:36:36
回答 1查看 584关注 0票数 1

我从不同的数据库中提取信息,并跟踪如何在每个数据库的不同I之间进行转换。

代码语言:javascript
复制
library("RCurl")
library("XML")
transformDrugId<-function(x){
URLtoan<-getURL(x)
PARSED<-htmlParse(URLtoan)
dsource<-xpathSApply( PARSED,"//*[@id='advancedform']/div[7]/fieldset/p/b[1]/text()",xmlValue)
id<-xpathSApply( PARSED,"//*[@id='advancedform']/div[7]/fieldset/p/a[1]/span/text()",xmlValue)
return(c(dsource,id))}  

作为一个例子,它在我的PC上使用linux和RSTUDIO的时间是

代码语言:javascript
复制
system.time(DBidstest<-sapply(urls[c(10001:10003)],transformDrugId))
 user  system elapsed 
0.132   0.000   3.675 

system.time(DBids7<-sapply(urls[c(601:700)],transformDrugId))
user  system elapsed 
3.980   0.124 549.233 

在url包含TDR数据库url附件列表的情况下,当我必须对300000个药物I执行此操作时,计算时间会变得非常长。作为一个例子,我提供了前五个urls

代码语言:javascript
复制
head(urls)
[1] "http://tdrtargets.org/drugs/view?mol_id=608858"
[2] "http://tdrtargets.org/drugs/view?mol_id=608730"
[3] "http://tdrtargets.org/drugs/view?mol_id=549548"
[4] "http://tdrtargets.org/drugs/view?mol_id=581648"
[5] "http://tdrtargets.org/drugs/view?mol_id=5857"  
[6] "http://tdrtargets.org/drugs/view?mol_id=550626"

任何可能有助于减少获取和分析html的时间的帮助都将被接受。我愿意接受任何可能涉及不使用R的建议。

后来我意识到,使用getURLAsynchronous对10个或更少的URL有时更快,但使用它两次变得更慢

代码语言:javascript
复制
system.time(test<-getURLAsynchronous(urls[c(1:10)]))
user  system elapsed 
0.128   0.016   1.414 
system.time(test<-getURLAsynchronous(urls[c(1:10)]))
user  system elapsed 
0.152   0.088 300.103
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-19 01:06:54

直接使用外壳下载$URLTEST| xargs -n 1 -P 7 wget -q,其中URLTEST是要下载的html列表。-n设置查询之间的等待时间和-P并行查询的数量,这两个查询都经过了微调,因此,对于100 htmls,我得到了真正的0m13.498s用户0m0.196s sys 0m0.652s。

在R的接口t libcurl中一定有一些问题,这使得与getURL()和downloadFile()的接口相比,它确实慢了一些。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40077721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档