gpt4 book ai didi

r - getURL 工作缓慢

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:23:05 26 4
gpt4 key购买 nike

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

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 花费的时间是

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

其中 urls 包含我检查 ID 的 TDR 数据库的 url 地址列表当我必须为 300000 个药物 ID 执行此操作时,计算时间变得非常长。 作为示例,我提供了前五个网址

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 的建议。

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

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

最佳答案

直接使用 shell 下载结果快十倍 回显 $URLTEST| xargs -n 1 -P 7 wget -q其中 URLTEST 是要下载的 html 列表。-n 设置查询之间的等待时间和 -P 并行查询的数量,两者都经过微调,以便我得到 100 个 html 真实 0m13.498s 用户 0m0.196s 系统 0m0.652s

R 的接口(interface) t libcurl 一定存在一些问题,这使得它与 getURL() 和 downloadFile() 相比真的很慢

关于r - getURL 工作缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40077721/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com