通过模拟浏览器方法爬取pubmed数据

通过模拟浏览器方法爬取pubmed数据,第1张

########################################################

#########################################################

getNCBIsession<-function(){

library(rvest)

library(xml2)

library(stringr)

url<-" http://www.baidu.com "#注意:此处的链接中不能用https,不然一律失败!

session<-html_session(url)

form<-html_form(session)[[1]]

form<-set_values(form,wd="NCBI")

Sys.sleep(10)

session<-submit_form(session,form)

session<-follow_link(session,"NCBI")

print(session_history(session))#注:此时的url是https,貌似是可以继续运行的 https://www.ncbi.nlm.nih.gov/

return(session)

}

getpubmedsession<-function(session,keyword){

session<-session

keyword<-keyword

form<-html_form(session)[[1]]

form<-set_values(form,term=keyword)

intersession<-submit_form(session,form)

pubmedsession<-follow_link(intersession,"PubMed")

print(pubmedsession)

session=pubmedsession

web<-read_html(session)

pagenum<-html_node(web,xpath = '//h3[@class="page"][1]/input')

pagenum<-html_attr(pagenum,"last")

pagenum<-as.numeric(pagenum)

print(pagenum)

return(list(session=session,pagenum=pagenum))

}

getpubmedinfo<-function(session){

session=session

info<-list(

title<-'//div[@id="maincontent"]/div//div[@class="rprt"]/div[2]/p/a[contains(@href,"pubmed")][1]',

author<-'//div[@id="maincontent"]/div//div[@class="rprt"]/div[2]//p[@class="desc"]',

journal<-'//div[@id="maincontent"]/div//div[@class="rprt"]/div[2]//p[@class="details"]/span[@class="jrnl"]',

detail<-'//div[@id="maincontent"]/div//div[@class="rprt"]/div[2]//p[@class="details"]',

pubmedid<-'//div[@id="maincontent"]/div//div[@class="rprt"]//dl'

)

node<-lapply(info,function(x){x=html_nodes(session,xpath = x)return(x)})

node<-sapply(node,html_text)

node<-data.frame(title=node[,1],journal=node[,3],author=node[,2],pumedid=node[,5],detail=node[,4])

return(node)

}

getpubmedinformation<-function(keyword){

session<-getNCBIsession()

session<-getpubmedsession(session,keyword)

table<-getpubmedinfo(session[[1]])

return(table)

}

table<-getpubmedinformation("heart")

#########################################################

#########################################################

1、安装node.js、mysql,此处略(自行搜索吧)…; 2、创建一个名为test的数据库,然后建一张名为user_info的表(仅供测试)… 这里假定mysql使用的用户名为root,密码为123456 相应的mysql如下: 复制代码 代码如下: /** *


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/sjk/6715458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存