R_Language 板


LINE

假设你有一个 data frame 叫 x,其中有一个栏叫 id。因此, myURL <- paste("http://www.ncbi.nlm.nih.gov/gene/", x$id, sep="") 就是所有要去拿取的完整网址。 以下一个为你设计的 function 先喂 R 吃下去。 它可以一次拿取一个网页里你要的资料。 myfunc <- function(myURL){ con <- url(myURL) txt <- scan(con, what="character") close(con) txt1 <- paste(txt, sep="", collapse=" ") pattern <- "<dt>Summary</dt> <dd>[[:print:]]+</dd>" re <- regexpr(pattern, txt1) start <- re[1] end <- start[1] + attr(regexpr(pattern, txt1),"match.length") - 1 return(substr(txt1, start + 22, end - 5)) } 再试试看 myfunc("http://www.ncbi.nlm.nih.gov/gene/2597") 的结果是不是你要的。有需要的话自己修一下。 可以的话,就用回圈把 myURL 一个一个丢给 myfunc() results <- list() for(i in 1:length(myURL)){ results[[i]] <- myfunc(myURL[i]) } 这样应该就好了。 : 各位好 : 我需要下载数百个基因的资料 : 网址的格式是: : http://www.ncbi.nlm.nih.gov/gene/XXXX : 其中XXXX是这些基因的ID(可能是四个数字或更多) : 比如GAPDH ID是2597 : 那连结就是:http://www.ncbi.nlm.nih.gov/gene/2597 : 如果我的data frame中有一个column是这些IDs : 我应该如何写出简单的R scripts来撷取这些网页中的"Summary"中的叙述 : 并加到原本data.frame中相对应rows 形成一个新的column (不包括"Summary"这字本身) : 例如对GAPDH而言就是 : "This gene encodes ... variants. [provided by RefSeq, Jan 2014]" : 我想应该是用Rcurl跟grep : 但因为完全外行 : 不知道如何逐个ID数值加到Rcurl网址的最後 : 再将下载的网页以grep搜寻到的strings加到对应的rows里 : 这样的问题很不专业 : 如果有任何的提示都欢迎 : 谢谢各位专家 : [程式范例]: : [关键字]: R 网页下载 部分撷取 -- http://apansharing.blogspot.com/ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.117.37.172
1F:推 kusoayan:我想问一下,如果用 XML 或 selectr 这两个套件会有什麽 02/04 12:28
2F:→ kusoayan:明显差异或 drawbacks 吗? 02/04 12:28
3F:推 stinky:太感谢了! 我回办公室马上试试看 02/04 12:44
4F:推 Wush978:我只用过XML, 目前没感受到什麽明显的drawback 02/04 12:47
5F:→ Wush978:真的说的话,就是处理中文会遇到的编码问题吧 02/04 12:47
6F:推 maninblue:推~ 02/04 14:21
7F:推 summitstudio:推范例码! 02/04 15:02
8F:→ andrew43:这篇的程式码都只用到R内建的function。 02/04 20:40
9F:→ andrew43:至於XML和selectr这些套件怎麽用我并不了解,但我猜 02/04 20:41
10F:→ andrew43:可能可以在截取网页内容时会更方便。 02/04 20:41
11F:→ andrew43:其实仔细看我的程式码,只是很简单的字串处理而已, 02/04 20:42
12F:→ andrew43:对付格式一致的大量网页应该够用了。 02/04 20:43
※ 编辑: andrew43 来自: 122.117.37.172 (02/04 20:43)
13F:推 stinky:谢谢andrew43 非常好用 稍修改後也可运用在其他databases 02/05 13:20
14F:→ stinky:我还有两个小问题想请教 因为抓取时经常会断线 02/05 13:22
15F:→ stinky:是否有办法让它失败时自动重复尝试几次? 02/05 13:23
16F:→ stinky:又或者让我指定我可以选择让程式从某个row继续抓? 02/05 13:25
17F:推 stinky:补充一下 因为我想把资料新增在最後一个column 02/05 13:44
18F:→ stinky:所以试了 x$Summary[[i]] <- myfunc(myURL[i]) 有用 02/05 13:46
19F:→ andrew43:重复尝试可能可以采取 try() 之类错误处理的方式解决。 02/05 13:53
20F:→ andrew43:至於一次从特定位置开始抓可能没办法。 02/05 13:53
21F:→ andrew43:对方server可能会把你判断为不友善的client, 02/05 13:55
22F:→ andrew43:不要做得太暴力,或是在loop里放一些延迟功能。 02/05 13:55
23F:推 stinky:我试将for(i in 1:length(myURL)){ 中的1改成其他数字 02/05 14:25
24F:→ stinky:作为续传起点 结果可以从断的资料点继续 太感谢你了! 02/05 14:26
25F:→ andrew43:喔,我以为你是指从一个网页的特定位置续传(这我办不到 02/06 16:34







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP