Python自动化小技巧12——根据论文题目自动导出参考文献格式

news2025/2/27 16:33:26

案例背景

在写论文的时候,弄参考文献格式也很麻烦,不可能手打人名题目期刊名称年月日卷号页码这些,我们一般都是使用系统自动导出的格式复制粘贴就行。中国知网可以直接导出论文的格式,但是知网基本只有中文的论文,英文的论文还有很多sci的库里面的论文都没有。

我们一般看英文论文都是国外的期刊库,网站都是各种来源的,想一一导出论文的参考文献格式需要一个一个去找......有的还不一定找得到,而且像science Direct网站导出来还是一个txt文件,都不能直接用.......

有没有办法,只需要论文的题目,就能输出参考文献格式呢?

有的,谷歌学术就可以做到,中文英文的论文都能导出参考文献格式,复制论文题目进去,然后点出引用就能复制粘贴了。

但是这个过程是很枯燥的,复制标题,搜索,点击引用,复制粘贴...反复循环。

但是这种重复性的劳动交给Python脚本是很棒,很便捷的。下面来实现它。


代码思路

先获取论文题目,放到一个列表里面。然后使用selenium库去进行模拟点击,得到引用文本,最后写入word就行。


代码实现

获取论文题目1

第一个方法,这里可以使用bat脚本,不需要python环境就能运行的。

首先和你所有的参考文献一个文件夹目录下,新建一个txt文件,写入下面代码:

dir *.* /b> 文本档案.txt

然后保存退出,右键这个文本文件,重命名,修改文件后缀。从 'txt' 改为 ‘bat’ 。这样它就变成了脚本文件。我把它名称命名为‘’目录‘

然后双击运行一下,就会多出一个文本档案的txt文件。里面就有这个文件夹下所有的文件名称。

          

 当然,这是对你文件名称是论文的名称才能使用。如果你论文的名称是乱码那就不行了....可以将每个文件重命名为论文名称然后再使用这个脚本。

 


获取论文题目2

第二个方法,针对这个库上面的导出来的txt文本去获取论文名称,我目前看英文论文就是这样用的。

导出的一个论文参考文献会给这样一个txt文件:

 我们可以看到第一行是作者们名字,第二行就是论文名称了。

我们遍历所有的下载的这个txt文件(在science Direct下载论文的时候记得顺便把这个引用导出txt文件也下载了,不然后面再找很麻烦),然后取出第二行论文名称,装在一个列表里面就行。

import numpy as np
import pandas as pd
import glob

files=glob.glob('*.txt')
paper_names=[]
for file in files:
    with open(file, 'r',encoding='utf-8') as f:
        context = f.readlines()
        context=[ con.replace('\n','') for con in context]
        paper_names.append(context[1])
        print(context[1])

可以看到我参考文献目录下面的所有论文名称都提取出来了。装在paper_names这个列表中


模拟点击获取参考文献格式 

导入selenium库

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By

from bs4 import BeautifulSoup
import os
from time import sleep

模拟浏览器点击,这里使用的是Xpath路径去定位网页文件元素。

然后使用的是edge的浏览器驱动,使用这段代码前还需要下载一个edge 的驱动,与代码文件放在同一目录下,下载链接在这:

Microsoft Edge WebDriver - Microsoft Edge Developer

根据电脑版本下,一般Windows下这个64就行:

 

模拟点击运行 代码如下:(每一步的原理就不讲了....没爬虫基础可能也看不懂)

ckwx=[]
from selenium.webdriver import Edge
from selenium.webdriver.edge.options import Options as EdgeOptions

driver = webdriver.Edge("msedgedriver")
url = "https://xs.scqylaw.com/"
driver.implicitly_wait(10)
driver.get(url)
sleep(3)

code=driver.find_element(By.XPATH,'//*[@id="lst-ib"]')
code.send_keys('LSTM')
driver.find_element(By.XPATH,'/html/body/div[1]/center/div[3]/form/div[2]/input[1]').click()

#网页转换,将网页转换到所需的地方
win =driver.window_handles
driver.switch_to.window(win[1])
sleep(2)

driver.find_element(By.XPATH,'//*[@id="mainshadow"]/div/div/input').send_keys('gfsoso')
sleep(1)
driver.find_element(By.XPATH,'//*[@id="mainshadow"]/div/div/a').click()


for i in range(len(paper_names)):
    code=driver.find_element(By.XPATH,'//*[@id="gs_hdr_tsi"]')
    code.clear()
    code.send_keys(paper_names[i])
    driver.find_element(By.XPATH,'//*[@id="gs_hdr_tsb"]').click()
    
    sleep(1)
    driver.find_element(By.XPATH,'//*[@id="gs_res_ccl_mid"]/div[1]/div[2]/div[3]/a[2]').click()
    sleep(1)
    
    yy=driver.find_element(By.XPATH,'//*[@id="gs_citt"]/table/tbody/tr[1]/td/div')
    ckwx.append(yy.text)
    driver.find_element(By.XPATH,'//*[@id="gs_cit-x"]').click()
    sleep(1)
driver.quit()

现在参考文献的格式都提取出来了,装在了ckwx这个列表中,打印查看:


 

写入word文档

用docx这个包就行:(下载命令——pip install python-docx)

import docx
from docx import shared
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
 
doc=docx.Document() #创建内存中的word文档对象
doc.styles['Normal'].font.name = 'Times New Roman'
doc.styles['Normal'].font.size = shared.Pt(9)
for i in range(len(ckwx)):
    doc.add_paragraph(f"[{i+1}] {ckwx[i]}")

doc.save("参考文献汇总.docx") #保存才能看到结果

最后生成一个word,查看一下效果还不错:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/39989.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pdf编辑器工具哪个好?好用的pdf编辑器一款就够!

pdf这类办公软件大家都很熟悉,不过pdf通常情况只能看不能编辑,这着实也很让人苦恼!特别是现在国内大多都已居家办公,本来就颇多不便,如果没有一款好用的pdf编辑器工具,那么势必导致工作效率更为低下。 那么…

第十二章 哈希表与字符串哈希

第十二章 哈希表与字符串哈希一、哈希表1、什么是哈希表2、算法逻辑(1)哈希函数(2)冲突解决3、算法模板二、字符串哈希1、算法逻辑2、算法用途3、算法模板一、哈希表 1、什么是哈希表 在之前的文章中,我们学习过离散…

Spring-aop技术

前言 spring-aop技术是对oop(面向对象)的一个补充,其底层其实就是使用aspect动态代理进行实现的,本篇文章将大概讨论下aop的核心实现流程 相关的核心概念 刚开始,先介绍下aop中比较核心的一些对象和概念,只要理解了这些&#xff…

【通信】粒子群算法5G物联网云网络优化【含Matlab源码 2160期】

⛄一、简介 1 引言 5G技术被大众所熟知之后,边缘计算也成了各行业关注的重点。最初的边缘计算概念是在2014年提出,到了2016年就拓展到了接入边缘,目前基本被定义为靠近用户边缘的、包含多种技术的接入网络,能够提供比较稳定的IT业…

精华推荐 | 深入浅出学习透析Nginx服务器的基本原理和配置指南「Keepalive性能优化实战篇」

Linux系统:Centos 7 x64Nginx版本:1.11.5 Nginx 是一款面向性能设计的 HTTP 服务器,能反向代理 HTTP,HTTPS 和邮件相关(SMTP,POP3,IMAP)的协议链接。并且提供了负载均衡以及 HTTP 缓存。它的设计充分使用异…

拼搏一周!刷了1000道Java高频面试题喜提阿里offer,定级P7

今年较往年相比面试要难的多,大环境也是对于程序员的要求越来越高,环境是我们无法改变的,我们能改变的只有自己,月初我一好友,努力拼搏一周,刷完了这份阿里P8大牛整理的这1000道Java高频面试题笔记&#xf…

GitHub配置SSH Keys步骤

Git配置SSH Keys步骤 许多 Git 服务器都使用 SSH 公钥进行认证。 为了向 Git 服务器提供 SSH 公钥,如果某系统用户尚未拥有密钥,必须事先为其生成一份。 生成步骤如下: 1. 设置用户名和邮箱 在git命令行中对git进行全局设置 git config --…

八、CANdelaStudio入门-Session

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的Session概念,欢迎各位朋友订阅、评论,…

微信小程序:用户基本信息的采集

写作背景 在开发商城小程序时需要显示用户头像、昵称、手机号等信息以便后续业务的实现,因此需要通过微信小程序的API采集用户数据,由此进行总结。 在微信小程序中获取用户信息可以通过这几种方式获取,getUserInfo、getUserProfile、open-da…

基于多目标遗传算法的IEEE14节点系统分布式电源选址定容matlab程序

基于多目标遗传算法的IEEE14节点系统分布式电源选址定容matlab程序 摘 要: 为更好地解决分布式电源选址定容问题,提出一种改进的多目标遗传算法。之后,考虑投资成本、网损以及电压稳定性三因素建立了一个三目标的数学模型,并采用上述多目标遗…

javaSE -运算符,注释,关键字(复习)

一、运算符 1.1、算术运算符 基本四则运算符 - * / %规则比较简单, 值得注意的是除法和取模 1.1.1、/ 除法 int / int 结果还是 int, 需要使用 double 来计算 public static void main(String[] args) {int a 1;int b 2;System.out.println(a / b);}要得到小数那就要使…

python>>numpy包

章节内容 什么是NumPy模块和NumPy数组 创建数组 基本数据类型 数据可视化 索引和切片 副本和视图 目录 什么是NumPy模块和NumPy数组? 创建数组 基本数据类型 数据可视化 索引和切片 副本和视图 什么是NumPy模块和NumPy数组? NumPy数组 python对象 …

pyhon项目中,使用pip安装第三方插件之后,明明使用pip list可以查到,但是在项目中import时仍然找不到怎么办?

认识pip:python中的pip是用来安装python第三方库的工具,是安装python的时候自带的。 1.安装方式:pip install 第三方库名,比如:pip install selenium 2.查看已安装的所有第三方库:pip list 或 pip3 list &…

Spring Cloud OpenFeign - - - > 日志级别配置

项目源码地址:https://download.csdn.net/download/weixin_42950079/87168704 OpenFeign 有 4 种日志级别: NONE: 不记录任何日志,是OpenFeign默认日志级别(性能最佳,适用于生产环境)。BASIC: 仅记录请求方…

五魔方、二阶五魔方

五魔方 五魔方是正十二面体魔方,其实和三阶魔方很像,用层先法就能复原,而且公式一模一样。 十二个面分为6个浅色面和6个深色面,所以浅色和深色各有一个中心面。 先复原浅色中心面这一层: 再复原浅色面的5个棱块&…

【GlobalMapper精品教程】030:栅格重采样案例教程(航测DSM)

本文讲解Globalmapper栅格重采样操作方法。数据为配套实验数据包中的data030.rar,航测内业生成的DSM,分辨率为0.04米,现在需要将其重采样为0.05米。 文章目录 一、重采样简介二、重采样操作一、重采样简介 栅格/影像数据进行配准或纠正、投影等几何变换后,像元中心位置通常…

超级记忆节目

一 问题描述 杰克逊被邀请参加电视节目“超强记忆”,参与者会玩一个记忆游戏。主持人先告诉参与者一个数字序列 {A1 , A2 , …, An },然后对该序列执行一系列操作或查询: ① ADD x y D ,表示对子序列 {Ax , …, Ay } 的每个数字…

Qt | Qt For Android、Qt5.14.2安卓开发环境搭建详细步骤

Qt | Qt For Android、Qt5.14.2安卓开发环境搭建详细步骤 目录Qt | Qt For Android、Qt5.14.2安卓开发环境搭建详细步骤1、简介2、软件下载1、Java SDK2、Android SDK3、Android NDK3、软件部署4、测试1、简介 搭建Qt For Android开发环境需要安装的软件有: JAVA …

第十四届蓝桥杯模拟赛(第二期)

写在前面 包含本次模拟赛的10道题题解能过样例,应该可以AC若有错误,欢迎评论区指出有疑问可私信我哈🫰🏻从2023开始暴力枚举每一个数,直到找到正确答案 start 2022def check(num) :t str(bin(num))if t[-6:] 0000…

核函数简介

文章目录基本概念概念1概念2:Kernel Func总结内积矩阵(Gram/Kernel Matrix)一些思考什么是有限正半定常用的Kernel FunctionsLinear KernelPolynomial KernelRBF(Gaussian) Kernel基本概念 概念1 高维空间存在可分的情况。 我们可以找一个映射函数送过…