运用requests模块爬取NCBI数据库论文题目及摘要
本人生物专业,本身做湿实验的,但对python有着极大的兴趣,因此开始自学Python。在这里记录一下学习进程。
近期编一个爬取NCBI数据库文献的脚本,放在这里希望大家能帮忙看看可以改进的地方,谢谢大家。
文章目录
- 前言
- 一、request库?
- 二、使用步骤
- 1.引入库
- 2.爬取数据
- 总结
- Date : 2021/9/8
- Position : Shanghai
前言
提示:生物狗需要大量阅读外文文献,其中NCBI对生物狗来说是不可或缺的数据库,本文主要是实现爬取NCBI的论文题目、作者、期刊、摘要及链接
提示:以下是本篇文章正文内容,下面案例可供参考
一、request库?
示例:本文采用requests库。
二、使用步骤
1.引入库
代码如下(示例):
import requests
import re
import xlwt
from lxml import etree
import numpy as np
import pandas as pd
2.爬取数据
代码如下(示例):
# Author : cxnie66
class NCBISpider:def __init__(self):self.headers = {"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36"}self.start_url = "https://pubmed.ncbi.nlm.nih.gov/?term=AHLs&page=1"def url_lists(self, total_num):url_lists=[]for i in range(total_num):url = "https://pubmed.ncbi.nlm.nih.gov/?term=AHLs&page={}".format(i) # 需要判断i是否需要字符串还是数字print(url)url_lists.append(url)return url_listsdef parase_url(self, url): # 爬取内容print(url)response = requests.get(url, headers=self.headers, timeout=8)return response.content.decode()def save_csv_title(self): # 先保存headers,也是就titlecolumns = ["PMID", "title", "paper_citation", "author", "Abstract", "paper_url"]title_csv = pd.DataFrame(columns=columns)title_csv.to_csv('AHLs_paper.csv', mode="a", index=False, header=1, encoding="utf-8")def get_content(self, html): # 获取相关内容nodes = etree.HTML(html)articel = nodes.xpath('//div[@class="search-results-chunk results-chunk"]/article')# print(articel)ret = []for art in articel:# passitem = {}# 实现标题的去换行、空字符和连接item["title"] = art.xpath('./div[@class="docsum-wrap"]/div[@class="docsum-content"]/a[@class="docsum-title"]//text()')item["title"] = [i.replace("\n", "").strip() for i in item["title"]]item["title"] = [''.join(item["title"])]item["PMID"] = art.xpath('./div[@class="docsum-wrap"]//span[@class="citation-part"]/span/text()')# 期刊相关信息item["paper_citation"] = art.xpath('./div[@class="docsum-wrap"]//span[@class="docsum-journal-citation full-journal-citation"]/text()')# 作者item["author"] = art.xpath('./div[@class="docsum-wrap"]//span[@class="docsum-authors full-authors"]/text()')# 摘要item["Abstract"] = art.xpath('./div[@class="docsum-wrap"]//div[@class="full-view-snippet"]//text()')item["Abstract"] = [i.replace("\n", "").strip() for i in item["Abstract"]]item["Abstract"] = [''.join(item["Abstract"])]# 文章地址item["url"] = art.xpath('./div[@class="docsum-wrap"]//div[@class="share"]/button/@data-permalink-url')ret.append(item)self.save_content(ret)print("保存好了!!!")def save_content(self, ret): #保存到指定内容pf = pd.DataFrame(ret)pf.to_csv('AHLs_paper.csv', mode="a", index=False, header=0, encoding="utf-8")def run(self):# 实现主要逻辑self.save_csv_title()start_html = self.parase_url(self.start_url)total_num = re.findall('totalResults: parseInt\("(.*?)", 10\)', start_html, re.S)[0]total_num = int(total_num)print(type(total_num))# 1、构造url列表url_lists = self.url_lists(total_num)for url in url_lists:# 2、requests爬虫htmls = self.parase_url(url)self.get_content(htmls)if __name__ =="__main__":ncbi_spider = NCBISpider()ncbi_spider.run()
只要更换url地址就可以实现自动爬取数据。
总结
提示:对我来说,这个项目我学到了几点重要内容:
- 获取内容之后的去换行和空字符串:遍历列表之后运用replace和strip进行去除。
- 多字符串拼接,运用 “”.join(content)方法。
- 构建csv文件,先保存title,即构建headers的column列表,之后进行pandas处理,随后 to_csv进行保存,注意此时headers=1.
- 保存爬取列表:运用pandas模块的DateFrame先生成数组,随后to_csv进行保存,此时设置headers=0(不保存title),mode=“a”(append,否则会覆盖原来内容),index=False(不添加字典的索引)。
待解决问题:我保存的csv文件每一个都有中括号和引号,有没有大佬能帮忙解决一下?像下面一样,我想去掉那些多余符号。谢谢。
Date : 2021/9/8
Position : Shanghai
运用requests模块爬取NCBI数据库论文题目及摘要相关推荐
- python爬取网页内容requests_[转][实战演练]python3使用requests模块爬取页面内容
本文摘要: 1.安装pip 2.安装requests模块 3.安装beautifulsoup4 4.requests模块浅析 + 发送请求 + 传递URL参数 + 响应内容 + 获取网页编码 + 获取 ...
- Python requests+bs4爬取中药数据库TCMSP的资源获得清肺排毒汤的靶向基因(曲线救国)
Python requests+bs4 爬取TCMSP的资源获得清肺排毒汤的靶向基因 为研究清肺排毒汤的中药材对于新冠肺炎的作用机制,需要收集相关数据,于是将目光洒向了TCMSP.. 检索首页是这样的 ...
- 多线程爬取NCBI数据库文献
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.queue是什么? 二.threading是什么? 三.使用步骤 1.引入库 2.读入数据 总结 前言 最近跟着黑 ...
- 爬虫 使用python+requests模块爬取12306网站的车次信息
用requests模块,爬取12306的车次信息 先看代码 import re import requests import json a=requests.get('https://kyfw.123 ...
- python怎么爬取Linux作业,Python爬虫之使用Fiddler+Postman+Python的requests模块爬取各国国旗...
介绍 本篇博客将会介绍一个Python爬虫,用来爬取各个国家的国旗,主要的目标是为了展示如何在Python的requests模块中使用POST方法来爬取网页内容. 为了知道POST方法所需要传递的HT ...
- Python爬虫之使用Fiddler+Postman+Python的requests模块爬取各国国旗
介绍 本篇博客将会介绍一个Python爬虫,用来爬取各个国家的国旗,主要的目标是为了展示如何在Python的requests模块中使用POST方法来爬取网页内容. 为了知道POST方法所需要传 ...
- requests模块爬取糗事百科用xpath解析
爬虫流程 定义url,伪造headers 请求数据 解析数据 提取数据 持久化保存 实例 import requests from lxml import etree import time impo ...
- 利用requests模块爬取任意城市肯德基门店地址
最近,作者在学习爬虫,故也简单的做了一个爬取作者所在城市肯德基门店地址信息的项目实例,并将其推广到可爬取各大城市肯德基门店地址.具体如下: 运行结果:
- python爬取百度搜索答案题目和摘要
url就自行构造吧 # coding:utf-8 import urllib2 import re from bs4 import BeautifulSoup url = 'http://www.ba ...
最新文章
- 编译问题一 undefined reference to `EVP_sha1' ‘RAND_byte’ ‘DES_key_sched’ 问题解决
- java异常—— finally 子句+带资源的 try语句
- [jQuery基础] jQuery案例 -- qq音乐以及初步解决Ajax 跨域问题
- 递归下降分析法的基本思想。_还不懂这八大算法思想,刷再多题也白搭!
- 从excel导入数据库过程中遇到的空格转义符(#160;)
- Python学习笔记——如何获得数值类型的最大值和最小值(表示范围)
- mysql数据库之联表查询
- 继续开源还是走向封闭?谷歌未来
- 最常用的GitHub—— Android 开源项目整理(精品)
- android简单悬浮窗源码,Android 悬浮窗的实现源码
- 深度人工神经网络模拟单个皮层神经元1
- 劳务外包和劳务派遣有什么区别
- 基础欠缺,是致命的。
- 批量下载文件,打包成zip压缩包
- 使用赫夫曼编码进行解码
- 如何设置IDEA代码风格为Google风格,使用Google风格format
- stm32 hid 双向通信
- DM达梦数据库集群之分布式集群(MPP)主备
- 全国大学生信息安全大赛线下赛crypto3题解
- 使用G.Projector 探索不同地图投影的效果