前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >R语言网络爬虫之Pubmed API的使用

R语言网络爬虫之Pubmed API的使用

作者头像
一粒沙
发布2019-07-31 14:49:22
6.3K20
发布2019-07-31 14:49:22
举报
文章被收录于专栏:R语言交流中心

查询文献你懂的,我认为Pubmed首选。当oncotarget杂志不再被Pubmed检索的收获,多少博士内心发慌,多少专家内心悔恨自己掏出的稿费。当然,用好Pubmed不能仅限于利用网页界面去检索那么几个关键词,AND 或者 OR。今天我来给大家介绍一下Pubmed API是如何在R语言中运用自如的。

1. 我们需要安装R语言实现网络爬虫的两个关键包: XML,RCurl。

安装R包大家都熟悉了:

install.packages('XML');

install.packages('RCurl');

或者你如果觉得写代码麻烦,你也可以通过R语言菜单实现:

2. R包安装成功后,在进行网络爬虫时需要加载这两个包:XML,RCurl。

R代码:

library(XML)

library(RCurl)

完成R包的加载。

3. 查看Pubmed API的解释文档,当然这都是英文的了。从中我们知道通过如下的链接和参数可以获取对应的文章ID以及摘要信息。

a. https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi 用来获取Pubmed ID

传递的参数包括:

db-数据库的名称,我们当然是pubmed;

term-检索的关键词,其检索的条件用AND 或者OR进行隔开对应的关键词。当然,关键词也可选择其所在的领域,我们今天的实例是以基因为例。需要在关键词后面加 [gene];

usehistory-即是否记录为检索历史,参数包括y (记录),n(不记录);

RetMax-每一页所要列举的ID的数量;

RetStart-所要展示的当前的页面。

b. https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi 用来获取Pubmed 文献的摘要信息。

传递的参数包括:

Query_key-获取a中的传递的键值,必须与WebEnv联合使用否则无法获取文献的摘要列表。

WebEnv-即从a中传递过来的网页事件ID,webenv标签中的值,用以告诉网页我们所要查询的是那些关键字的文献。

rettype- 我们获取的列表的类型,我们以获取摘要为主,参数值也就是abstract。当然,你也可以按自己的需求去改。

retmode-获取当前文献列表的内容的形式,这个一般都是以文本形式记录所获取的内容,参数值为text。

4. R语言调用Pubmed API代码实例(获取基因SI和cancer相关的文献):

path='https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi'

web=getForm(path,db='pubmed',term='SI[gene]+AND+cancer',usehistory='y',RetMax='10',RetStart='1')

doc<-xmlParse(web,asText=T,encoding="UTF-8")

webenv<-sapply(getNodeSet(doc,"//WebEnv"),xmlValue)

key<-sapply(getNodeSet(doc,"//QueryKey"),xmlValue)

path1='https://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi'

res=getForm(path1,Query_key=key,db='pubmed',WebEnv=webenv,rettype='abstract',retmode='text')

write.table(res,'D:/examle.txt',col.names=F)

以上代码运行结果就是将获取的文献摘要存在example.txt的文档中。

使用中注意的问题:

  1. 如果出现以下几面,重新运行,library(‘RCurl’)
  1. 查看我们是否获取了Pubmed ID 的列表,如图
  1. 查看我们获取的所有的文献的摘要:

至此,我们可以获取一种基因相关的文献。当然,我们不可能只是为了检索这么一个基因,当检索100,1000,甚至10000的时候,你懂的,加个FOR循环,只要你的网不断,那么你获取的将会不会打折扣。

参考文档:

  1. https://www.ncbi.nlm.nih.gov/books/NBK25501/
  2. https://www.ncbi.nlm.nih.gov/nlmcatalog/?term=oncotarget
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-10-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 R语言交流中心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档