2025年r语言的runmed函数_使用R语言爬取DailyMed药物信息

r语言的runmed函数_使用R语言爬取DailyMed药物信息之前介绍过如何批量爬取 NCBI 中基因详细信息 今天介绍爬取 DailyMed 指定药物的数据 根据指定药物药物及其 ID 列表 由 ID 可以获得该药的网页链接 爬取这些药物在 DailyMed 中的相关信息 DailyMed 中对药物的描述如下 我们提取每个药物的下列信息 Marketing Status

大家好,我是讯享网,很高兴认识大家。

之前介绍过如何批量爬取NCBI中基因详细信息,今天介绍爬取DailyMed指定药物的数据。

根据指定药物药物及其ID列表(由ID可以获得该药的网页链接)爬取这些药物在DailyMed中的相关信息:


讯享网

DailyMed中对药物的描述如下:

我们提取每个药物的下列信息:Marketing Status,Active ingredient,WARNINGS和Stop use and ask a doctor if。

先载入所需要的包并读入上面的列表:

library(RCurl)

library(rjson)

library(stringr)

library(XML)

library(openxlsx)

rm(list=ls())

setwd("D:\\ding")

#读入xlsx文件,第一列是Drug名,第二列是DailyMed ID:

Dailymed_file

根据药物ID获得该药所在网址:

Dailymed_file$Dailymed_url

结果如下:

接下来定义提取函数:

1. 获得指定字段marketing-status的的Node内容:

getMarketing

els2 = getNodeSet(html_txt1, "//*[@id=\"marketing-status\"]")

# 获得Node的内容,并且去除空字符:

els2_txt

if(length(els2_txt)==0){

return(NA)

}

else{

# 去除\n:

str_c(str_replace_all(els2_txt,"(\\n )+",""),collapse = " ")

}

}

2. 获得指定字段Active ingredient的的Node内容:

getActiveIng

els1 = getNodeSet(html_txt1, "//*[@id=\"drug-information\"]/div/ul/li[a='ACTIVE INGREDIENT' or a='Active ingredient' or a='Active Ingredient' or a='OTC - ACTIVE INGREDIENT SECTION' or a='ACTIVE INGREDIENTS' or a='Active Ing' or starts-with(a,'Active') or starts-with(a,'ACTIVE')]/div")

# 获得Node的内容,并且去除空字符:

els1_txt

if(length(els1_txt)==0){

return(NA)

}

else{

# 去除\n:

str_c(str_trim(str_replace_all(els1_txt,"(\\n)+","")),collapse = " ")

}

}

3. 获得指定字段warnings的的Node内容:

getWarning

els3 = getNodeSet(html_txt1, "//*[@id=\"drug-information\"]/div/ul/li[a='Warnings' or starts-with(a,'Warning') or starts-with(a,'WARNING') or starts-with(a,'warning')]/div")

# 获得Node的内容,并且去除空字符:

els3_txt

if(length(els3_txt)==0){

return(NA)

}

else{

# 去除\n:

str_c(str_trim(str_replace_all(els3_txt,"(\\n )+","")),collapse = " ")

}

}

4. 获得指定字段Stop use的的Node内容:

getStopUse

els5 = getNodeSet(html_txt1, "//*[@id=\"drug-information\"]/div/ul/li[a='STOP USE' or a='stop use' or starts-with(a,'stop') or starts-with(a,'Stop') or starts-with(a,'STOP')]/div")

# 获得Node的内容,并且去除空字符:

els5_txt

if(length(els5_txt)==0){

return(NA)

}

else{

# 去除\n:

str_c(str_trim(str_replace_all(els5_txt,"(\\n )+","")),collapse = " ")

}

}

进行爬取数据:

for(i in 1:nrow(Dailymed_file)){

# 获得网址:

doc

cat(i)

cat("\t获取网页内容成功!")

# 获得网页内容

html_txt1 = htmlParse(doc, asText = TRUE)

# #可以省略,保存网页内容到本地文件:

# con

# sink(con,append = TRUE)

# html_txt1

# sink()

#获得Active ingredient/marketing-status/warnings/ADR:

Dailymed_file[i,"Active_Ingredient"]

cat("写入Active Ingredient!")

Dailymed_file[i,"Marketing"]

cat("写入Market!")

Dailymed_file[i,"Warning"]

cat("写入Warning!")

Dailymed_file[i,"Stop_use"]

cat(paste("写入ADR!\n"))

}

爬取结果如下:

更多原创精彩视频敬请关注生信杂谈:

小讯
上一篇 2025-02-23 21:03
下一篇 2025-01-05 21:22

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/32808.html