连夜帮美女小姐姐爬取文献,第二天早晨给她一个Excel文件

2024-03-27 05:59

本文主要是介绍连夜帮美女小姐姐爬取文献,第二天早晨给她一个Excel文件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

最后爬取的结果如下

某天中午收到漂亮小姐姐微信,是这样的:

然后晚上10点下班回家开始了连夜写爬虫脚本,终于在2点的时候基本可以用了:

然后早上醒来直接将爬下来的文章发了过去O(∩_∩)O哈哈~。

代码实现如下:

# Author   : 叨陪鲤
# Date     : 2021/4/10
# Position : Beijing
from fake_useragent import UserAgent
from bs4 import BeautifulSoup
from urllib import request
from urllib import error
import xlwt
import re
import timeTotalNum=0class Article(object):title = ""link = ""authors = ""magz = ""time = ""doi = ""cite = ""snip = ""def __init__(self):title = "New Paper"def html_request(url):if url is None:returnprint("download html is :{0}".format(url))# 如果url包含中文,则需要进行编码# 模拟浏览器行为headers = {'UserAgent': str(UserAgent().random)}req = request.Request(url, headers=headers)try:html = request.urlopen(req).read().decode('utf-8')except error.URLError as e:if hasattr(e, "code"):print(e.code)if hasattr(e, "reason"):print(e.reason)return None# print(html)return htmldef save_xls(sheet,paper):# 将数据按列存储入excel表格中global TotalNumsheet.write(TotalNum, 0, TotalNum)sheet.write(TotalNum, 1, paper.title)sheet.write(TotalNum, 2, paper.link)sheet.write(TotalNum, 3, paper.authors)sheet.write(TotalNum, 4, paper.magz)sheet.write(TotalNum, 5, paper.time)sheet.write(TotalNum, 6, paper.doi)sheet.write(TotalNum, 7, paper.Cite)sheet.write(TotalNum, 8, paper.Snip)TotalNum += 1# 最初用来调试解析页面用的
def html_parser0():if url is None or html is None:return# 使用正则匹配所有的文章列表pattern_article = '<article class="full-docsum" data-rel-pos=(.+?)</article>'articles = re.compile(pattern_article, re.S).findall(html.replace('\n', ''))# 遍历每一个文章的相关信息for article in articles:soup = BeautifulSoup(article, 'html.parser')title = soup.find('a', attrs={'class': 'docsum-title'})print("[Title]:{0}".format(title.text.replace('  ', '')))print("[Link]:{0}{1}".format("https://pubmed.ncbi.nlm.nih.gov", title.attrs['href']))authors = soup.find('span', attrs={'class': 'docsum-authors full-authors'})print("[Author]:{0}".format(authors.text))citationInfos = soup.find('span', attrs={'class': 'docsum-journal-citation full-journal-citation'})Mtd = "{0}".format(citationInfos.text).split('.')print("[MAGZ]:{0}".format(Mtd[0]))print("[Time]:{0}".format(Mtd[1].split(';')[0]))print("[DOI]:{0}".format(Mtd[2].split(':')[1]))citation = soup.find('span', attrs={'class': 'citation-part'})print("[Cite]:{0}".format(citation.text.split(':')[1]))citation = soup.find('div', attrs={'class': 'full-view-snippet'})print("[Snip]:{0}\n".format(citation.text).replace('  ', ''))def html_parser(sheet, html):if url is None or html is None:return# 使用正则匹配所有的文章列表pattern_article = '<article class="full-docsum" data-rel-pos=(.+?)</article>'articles = re.compile(pattern_article, re.S).findall(html.replace('\n', ''))# 遍历每一个文章的相关信息for article in articles:paper = Article() # 创建一个对象,用来存储文章信息soup = BeautifulSoup(article, 'html.parser')# 分别用来获取不同的关键信息title = soup.find('a', attrs={'class': 'docsum-title'})authors = soup.find('span', attrs={'class': 'docsum-authors full-authors'})citationInfos = soup.find('span', attrs={'class': 'docsum-journal-citation full-journal-citation'})Mtd = "{0}".format(citationInfos.text).split('.')cite = soup.find('span', attrs={'class': 'citation-part'})snip = soup.find('div', attrs={'class': 'full-view-snippet'})# 将信息存储在paper对象上paper.title = "{0}".format(title.text.replace('  ', ''))paper.link = "{0}{1}".format("https://pubmed.ncbi.nlm.nih.gov",title.attrs['href'])paper.authors = "{0}".format(authors.text)paper.magz = "{0}".format(Mtd[0])paper.time = "{0}".format(Mtd[1].split(';')[0])# doi = "{0}".format(Mtd[2].replace(' ','').split(':')[1])paper.doi = "略"paper.Cite = "{0}".format(cite.text.replace(' ','').split(':')[1])paper.Snip = "{0}".format(snip.text).replace('  ', '')save_xls(sheet, paper)# print(Mtd)# print(paper.title)# print(paper.link)# print(paper.authors)# print(paper.magz)# print(paper.time)# print(paper.doi)# print(paper.Cite)# print(paper.Snip)# print("\n")# print("[Title]:{0}".format(title.text.replace('  ', '')))# print("[Link]:{0}{1}".format("https://pubmed.ncbi.nlm.nih.gov",title.attrs['href']))# print("[Author]:{0}".format(authors.text))# print("[MAGZ]:{0}".format(Mtd[0]))# print("[Time]:{0}".format(Mtd[1].split(';')[0]))# print("[DOI]:{0}".format(Mtd[2].split(':')[1]))# print("[Cite]:{0}".format(cite.text.split(':')[1]))# print("[Snip]:{0}\n".format(snip.text).replace('  ', ''))if __name__ == '__main__':myxls = xlwt.Workbook()sheet1 = myxls.add_sheet(u'PaperInfo',True)column = ['序号','文章名称','原文链接','作者','发表周刊','发表时间','DOI','引用次数','摘要']for i in range(0, len(column)):sheet1.write(TotalNum, i, column[i])TotalNum+=1page = 1while page <= 1000:url = "https://pubmed.ncbi.nlm.nih.gov/?term=genetic%20map&page="+str(page)html = html_request(url)html_parser(sheet1, html)myxls.save('NCBI文章之geneticMap.xls')page += 1myxls.save('NCBI文章之geneticMap.xls')

这篇关于连夜帮美女小姐姐爬取文献,第二天早晨给她一个Excel文件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:https://blog.csdn.net/s2603898260/article/details/115563907
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/851145

相关文章

java中使用POI生成Excel并导出过程

《java中使用POI生成Excel并导出过程》:本文主要介绍java中使用POI生成Excel并导出过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求说明及实现方式需求完成通用代码版本1版本2结果展示type参数为atype参数为b总结注:本文章中代码均为

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

Java利用poi实现word表格转excel

《Java利用poi实现word表格转excel》这篇文章主要为大家详细介绍了Java如何利用poi实现word表格转excel,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、每行对象类需要针对不同的表格进行对应的创建。package org.example.wordToEx

利用Python实现添加或读取Excel公式

《利用Python实现添加或读取Excel公式》Excel公式是数据处理的核心工具,从简单的加减运算到复杂的逻辑判断,掌握基础语法是高效工作的起点,下面我们就来看看如何使用Python进行Excel公... 目录python Excel 库安装Python 在 Excel 中添加公式/函数Python 读取

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

使用EasyExcel实现简单的Excel表格解析操作

《使用EasyExcel实现简单的Excel表格解析操作》:本文主要介绍如何使用EasyExcel完成简单的表格解析操作,同时实现了大量数据情况下数据的分次批量入库,并记录每条数据入库的状态,感兴... 目录前言固定模板及表数据格式的解析实现Excel模板内容对应的实体类实现AnalysisEventLis

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

Python Excel实现自动添加编号

《PythonExcel实现自动添加编号》这篇文章主要为大家详细介绍了如何使用Python在Excel中实现自动添加编号效果,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍简单的说,就是在Excel中有一列h=会有重复

使用Apache POI在Java中实现Excel单元格的合并

《使用ApachePOI在Java中实现Excel单元格的合并》在日常工作中,Excel是一个不可或缺的工具,尤其是在处理大量数据时,本文将介绍如何使用ApachePOI库在Java中实现Excel... 目录工具类介绍工具类代码调用示例依赖配置总结在日常工作中,Excel 是一个不可或缺的工http://