Advertisement

python爬取pubmed的文献_爬虫获取pubmed中文献的标题和摘要

阅读量:

为了解决在PubMed等数据库中快速浏览相关文献标题及摘要的问题,我开发了一个相对简单的爬虫程序(目前仅支持单一关键词及多个关键词通过AND检索)。该程序旨在为研究人员提供便捷的方式以批量提取研究人员感兴趣的文献标题及摘要信息。

采用Python编程语言进行开发的编辑器系统中,默认集成有requests模块作为基础功能。该系统通过requests.get()方法执行网络请求,并利用re模块中的正则表达式处理文本数据。具体而言,在代码实现中模拟了浏览器的行为。尽管如此,在实际应用中仅选择了2个不同的浏览器实例进行处理。

import requests

import re

key=input("请输入你想查找的信息:")

local_url=input("请输入你想存储的位置及名称:")

turl="https://pubmed.ncbi.nlm.nih.gov/"

tdata=requests.get(turl,params={"term":key}).text

pat_allpage='(.*?)'

allpage=re.compile(pat_allpage,re.S).findall(tdata)

num = input('请通过输入框提供文章数量(共计:'+str(int(allpage[0].replace('\n ', '').replace(',',''))*10)+')')

for j in range(0,int(num)//10+1):

url="https://pubmed.ncbi.nlm.nih.gov/"+"?term="+key+"&page="+str(j+1)

data=requests.get(url,params={"term":key}).text

pat1_content_url='

.*?<.>'

content_url=re.compile(pat1_content_url,re.S).findall(data)

Python字典变量hd被赋值为一个包含两个字符串键值对的对象;其中该字段由两个相同的字符串组成;第一个字符串由以下部分组成: Mozilla / [详细描述];第二个字符串则由以下部分构成: Mozilla / [详细描述]

for i in range(0,len(content_url)):

curl="https://pubmed.ncbi.nlm.nih.gov/"+content_url[i]

try:

cdata=requests.get(curl,headers=hd).text

pat2_title="

(.*?)"

pat3_content='

(.*?)

'

pat4_date='(.*?)'

title=re.compile(pat2_title,re.S).findall(cdata)

print("正则爬取的题目是:"+title[0])

content=re.compile(pat3_content,re.S).findall(cdata)

date=re.compile(pat4_date,re.S).findall(cdata)

fh=open(local_url+".html","a",encoding="utf-8")

fh.write(str(title[0])+' ----'+str(date[0])+"
"+str(content[0])+"
")

fh.close

except Exception as err:

pass

if int(num) < 10:

if i+1 == int(num):

break

elif int(num) == 10:

if i == 9:

break

elif (j*10)+i+1 == int(num):

break

将上述代码保存为.py格式,进入终端运行代码:

python 文件名.py

设置输入关键词为(target; mutation),并将保存路径及文件名称设置在G盘爬虫学习目录下为drug_mutation,并希望从中获取相关文章数量为7篇

#多个关键词需要使用分号分隔,在输入中需要将分号改为‘%3bmutation’

得到.html格式的文件:标题----时间 摘要

遇着的问题:

当运行程序时可能出现错误;再次尝试则问题会解决。(可能源于网络延迟, 访问次数过多导致拒绝, 稍后再试一次)

2.速度有点慢;(可能是网慢,导致请求返回的比较慢)

未来进行改进的地方:

  1. 点击标题即可下载该篇文章;2. 为了确保输入不是整数,则可避免使用if语句;3. 支持根据时间筛选文章内容;4. 除了支持逻辑运算and之外,则能够执行or和not操作。

刚开始研究爬虫,有什么建议,欢迎提出来!有不懂的,一起探讨!

原文链接:

全部评论 (0)

还没有任何评论哟~