任务描述
今天收到一个任务,在知网上,把一位专家所有的论文全都下载下来,要保存为PDF格式。
知网不支持批量导出PDF格式论文。一个一个下载PDF,太繁琐了。
解决方案:找到一个油猴脚本,这个脚本可以从知网批量导出论文。
脚本安装
首先,使用 chrome 浏览器安装油猴,https://www.tampermonkey.net/。
点击导航栏的 用户脚本,在下面的搜索框输入 “知网”。
下图是这个脚本的介绍,最后更新日期是24年12月。该脚本支持了PDF的批量下载。
脚本地址
若你下载了不需要的脚本,在这里删除:
浏览器的设置
批量下载论文的PDF格式的时候,会频繁弹出窗口,所以要运行浏览器弹出窗口。
浏览器更改默认下载路径,记得后面再改回来:
这样就可以把论文直接下载到一个文件夹里面。
批量导出PDF过程
在搜索作者的时候,可能有作者会同名,要为作者选择正确单位。
脚本安装后,在知网的右侧,会出现一个批量下载的按钮
点击右侧批量下载的按钮之后,会弹出下述界面。
- 获取链接:捕获知网当前界面的全部论文
- 全选:选中全部论文
- 下载:下载选中的论文
- 清除数据:在下一次获取链接的时候,需要先清除数据
在使用的过程中,下载达到40篇以上的论文的时候,知网就会频繁的弹出验证码。然后要求重新登录。这个验证的过程会难受一些。
【优化方案】:拼多多,淘宝 花个几块钱,可以买个他们自己搭建的知网镜像网站账号,他们的网站不会有这么多的验证码。
论文下载篇数验证
论文如果重复下载了,文件会重命名,重复的文件会以括号加数字结尾,直接删除就行。
下述的Python脚本,辅助用户找出漏掉的论文。
知网可以批量导出论文的BibTex格式的参考文献的引用格式。
bib格式的导出文件的论文名字为:title = {xxx}
。可以使用正则表达式匹配到论文的标题。与下载文件夹的论文对比,就可以找出哪些论文还没下载了。
实现代码如下:
import re
import os
file_bib = "BibTex批量导出的参考格式.bib"
source_dir = "论文下载的文件夹"
with open(file_bib, "r") as f:
text = f.read()
data = re.findall("title = {(.*?)}", text)
# 已下载的论文
down_papers = [name.split("_")[0] for name in os.listdir(source_dir)]
for idx, paper_name in enumerate(data):
if paper_name not in down_papers:
page = idx // 20 + 1
print(paper_name, page)
输出结果是论文名和对应的页码数。知网一页20篇论文,用bib的下标数量除以20,就知道该论文所在的页码数了。这样方便后续手动下载。