知网等数据库文献快速直接导入EndNote的方法

这个方法的前提是了解 EndNote 的一个机制:使用 EndNote 打开 txt 或 pdf 文件时,EndNote 会自动解析并尝试将文件导入到 EndNote 中,而用 EndNote 打开文件的步骤在 Windows 中可以用 CMD 命令简化

D:
cd D:\Program Files (x86)\EndNote X9
EndNote.exe D:\ChromeDownload\CNKI-20221118000000000.txt

这段命令实现的效果就是切换到 EndNote 的安装目录,再调用 EndNote.exe 打开导出的 EndNote 格式的 txt 文件

而输入 CMD 命令这一步骤还可用程序简化,比如在 Python 中可以用下面的命令实现 CMD 同样的效果,注意在 Python 中想一次运行多行命令,需要用 && 连接

import os

cmd = "D: && cd D:\Program Files (x86)\EndNote X9 && EndNote.exe D:\ChromeDownload\CNKI-20221118000000000.txt"
os.system(cmd)

既然这个步骤可以用程序实现,那就可以直接用 Python 监控浏览器的下载目录,一旦发现有新的 "CNKI-xxx.txt" 格式的文件,就调用 EndNote 打开该文件,同样可以监控剪贴板,如果剪贴板新增内容符合 EndNote 格式,那么就将剪贴板内容存储到浏览器的下载目录

同样的道理,可以监控 Elsevier 导出的 ris 文件,全部代码如下:

import os
import time
import pyperclip


def get_file(path):
    file_list = []
    # 遍历D:\ChromeDownload目录下所有txt文件的文件名
    for file in os.listdir(path):
        # 如果文件以"CNKI-"开头,以".txt"结尾,或者以".ris"结尾
        if (file.startswith('CNKI-') and file.endswith('.txt')) or file.endswith('.ris'):
            # 将文件名和文件创建时间添加到file_list列表中
            file_list.append(file)
    return file_list


# 从settings.txt中读取第一行字符串,以":"分割,获取分割后的第2个字符串
download_path = open('settings.txt', 'r', encoding='utf-8').readlines()[0].split(':')[1].strip()
# 从settings.txt中读取第二行字符串,以":"分割,获取分割后的第2个字符串
end_note_path = open('settings.txt', 'r', encoding='utf-8').readlines()[1].split(':')[1].strip()
# 将end_note_path以':'分割,获取分割后的第1个字符串
end_note_disk = end_note_path.split(':')[0]
print("下载路径:", download_path)
print("EndNote路径:", end_note_path)
print("EndNote磁盘:", end_note_disk)
print("正在监控 " + download_path + " 文件夹及剪贴板")
file_array = get_file(download_path)
clip_text = pyperclip.paste()
# 每秒运行一次get_file()函数,对比文件名和文件创建时间是否有变化
while True:
    tem_file_list = get_file(download_path)
    clip_text_tem = pyperclip.paste()
    if file_array != tem_file_list:
        print('文件有变化')
        # 获取不一样的文件
        new_file = set(tem_file_list) ^ set(file_array)
        print(new_file)
        # 更新file_array
        file_array = tem_file_list
        cmd = end_note_disk + ": && cd " + end_note_path + " && EndNote.exe " + download_path + new_file.pop()
        os.system(cmd)
    if clip_text != clip_text_tem:
        print('剪贴板有变化')
        # 如果clip_text_tem以"%0 Journal Article"开头
        if clip_text_tem.startswith('%0 Journal Article'):
            # 将clip_text_tem写入文件"D:\ChromeDownload\CNKI-"+时间戳+".txt"
            with open(download_path + "\CNKI-" + str(int(time.time())) + '.txt', 'w', encoding='utf-8') as f:
                f.write(clip_text_tem)
        # 更新clip_text
        clip_text = clip_text_tem
    time.sleep(0.5)

这样就可以实现,在浏览器下载 EndNote 文件、ris 文件或者剪贴板复制 EndNote 格式的文件后,自动导入到 EndNote

程序下载地址:知网、Elsevier文献自动导入到EndNote工具-桌面系统文档类资源-CSDN下载可以实现知网下载txt文件/复制txt内容,或Elsevier下载ris文件后,自动导入更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/qq_41961851/87094615

但这样操作还是差了一步,即将 PDF 文件也添加到 EndNote 中,这个功能要想实现有点复杂,这里暂且记录一下实现的方法

要想实现这一功能,要了解 EndNote 导入 PDF 的机制:通过抓包可以看到,EndNote 会在 PDF 文件的元数据中读取 DOI 链接,然后将"https://www.crossref.org/openurl/?pid=thomr:thomr922&noredirect=true&id=" 与 DOI 链接拼接,再访问这个链接即可得到包括文献的标题、作者、期刊等信息的 XML 文件,再解析该 XML 文件即可得到文献的相关信息

有些文献的 PDF 直接导入 EndNote 不能获取文献信息的原因也就有两个,一是 PDF 文件的元数据中没有包括 DOI 链接,二是 crossref.org 这个网站没有收录该文献,这样也会返回一个 XML 文件,但文件中没有相关信息

不管是哪个原因,我们都可以用程序解决这一问题,第一种情况可以给 PDF 元数据添加 DOI 链接,第二种情况稍微有点复杂,可以通过拦截 crossref.org 返回的 XML 文件,替换成有文献信息的 XML 文件即可,Python 抓包工具可以用 mitmproxy

复杂的地方在于分析知网提供的 EndNote 文件格式和 crossref.org 返回的 XML 文件格式,还要同时监控 PDF 文件和 EndNote 文件

先写到这,有时间再继续,有兴趣的朋友可以试试看

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
EndNote是一款专业的参考文献管理软件,它支持从多种来源导入文献,包括.txt格式的文本文件。如果你想把知网(CNKI)文献导出为.txt格式,首先你需要在知网下载或复制全文链接,然后按照以下步骤进行操作: 1. **获取CNKI文献的TXT格式**: - 在知网网页上找到你想要的文献,通常点击"全文下载"或"PDF全文"时可以选择"TXT格式"下载,如果直接没有TXT选项,你可能需要借助一些在线转换工具将PDF转换成TXT。 2. **导入EndNote**: - 打开EndNote软件,点击菜单栏的“File”(文件),选择“Import”(导入)或“References”(引用)下的相应选项,如"Import from File"(从文件导入)或"Import from Clipboard"(从剪贴板导入)。 3. **添加TXT文件**: - 将下载的TXT文件拖放到EndNote导入窗口,或者点击“Browse”(浏览)选择文件。如果内容是链接,先复制到剪贴板,然后选择“Paste from Clipboard”。 4. **设置格式**: - 在导入过程中,EndNote可能会识别出部分文献信息,但可能需要手动校对和补充作者、标题、出版年份等字段。确保所有必要的信息都正确无误。 5. **整理引用**: - 导入后,你可以将这些文献添加到你的EndNote数据库中,通过EndNote的引用管理和格式化功能,为写作论文提供方便。 **相关问题**: 1. EndNote支持哪些文件格式的导入? 2. 如何在EndNote中手动校对和编辑导入文献信息? 3. EndNote如何帮助用户组织和引用已导入文献
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值