中国知网博硕士论文PDF下载及书签自动生成

0. 用到的工具

  1. Adobe Acrobat Pro 2017;
  2. Python 3.6.2;
  3. AutoBookMark Pro

1. 下载PDF格式的博硕士论文

我倾向于使用网站1,能直接获取符合AutoBookMark Pro格式要求的目录,而且能用Zotero添加参考文献条目。

网站1:中国知网海外版
能下载全文pdf和分章pdf, 但连接速度较慢。
网站2:CNKI学问
能下载全文pdf,速度较快,不能下载分章pdf,目录不易处理。

2. 爬取目录

Python爬虫,程序如下。

# Python 3.6.2
import requests
from bs4 import BeautifulSoup

def get_gb(url):       #满足格式的目录内容
    headers = {
        "Host":"gb.oversea.cnki.net",
        "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0",
        "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
        "Accept-Language":"zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
        "Accept-Encoding":"gzip, deflate",
        "DNT":"1",
        "Connection":"keep-alive",
        "Upgrade-Insecure-Requests":"1"
    }
    
    print('\n开始访问网页...')
    response = requests.get(url, headers=headers)  # 发送get请求。使用headers以避免访问受限  
    soup = BeautifulSoup(response.content, 'html.parser')       #得到 soup对象 ,后面的参数是关于格式的
    
    ### 得到目录文字
    results1 = soup.find_all('a', attrs = {'class':'RollLink'} )        # 目录所在标签
    catalog = []    #目录
    for res1 in results1:
        strx = res1.get_text()    #目录文字(自带缩进)
        #print(strx.replace('\r\n', ''))
        catalog.append(strx.replace('\r\n', '').replace('\xa0', ' ') )

    #print(catalog)
    
    ### 得到页码
    results2 = soup.find_all('td', attrs = {'width':'100'} )        # 页码所在标签
    pages = []    #目录
    for res2 in results2:
        page = res2.get_text()    #页码文字("14-43")("起始页-结束页")
        #print(page)
        page_list = page.split("-")      #['14', '43']
        pages.append(page_list[0].replace('\r\n', ''))
        
    #print(pages)

    print('已从网页得到目录和页码')
    return catalog, pages

def save(catalog, pages):
    with open(r'D:\桌面\PDF目录.txt', 'w') as f:     # 写方式打开一个文本; 没有指定'utf-8',默认为'ANSI'
        for i in range(len(catalog)):
            each = catalog[i] + ',' + pages[i] + '\n'
            f.write(each)
            
    print('\n已生成目录文件 D:\桌面\PDF目录.txt')
    print('接下来可通过 “Acrobat-增效工具-BookMarks-Creat From Text Files” 实现自动创建PDF书签。')
    
if __name__ == '__main__':
    address = 'http://gb.oversea.cnki.net/kcms/download.aspx?filename=2dSRzKh10StlnNxkXVwUjW1QTVOlGV4cVVjlWcWNHcjRTYtRHdvNEclZlR3sySxc1U5wEcr5mSlVmZ=0TSuh2NOZVS4oVehVndilzURZFVj9iM48mRIZDdppmQyFUeK52a1ZTbthXajJjbDljRpt0dZ5kTPt&dflag=catalog&tablename=CDFD0911&cflag=pdf'
    address = input('右击粘贴CNKI分章下载目录页的网址>>>')
    
    catalog, pages = get_gb(address)
    save(catalog, pages)

3. 在PDF中创建书签

下载的pdf格式论文中是没有书签的,不方便查看。

  1. 下载 AutoBookMark Pro,解压到Acrobat的安装路径下的plug_ins文件夹内,得到 .\Acrobat\plug_ins\AutoBookmark Professional 目录结构,然后打开pdf文件,上面出现 增效工具。
    中国知网博硕士论文PDF下载及书签自动生成2. 增效工具-Bookmarks-Creat From Text File…,选择第2步中得到的目录文件“D:\桌面\PDF目录.txt”,确定即可自动生成书签,点击可跳转。
上一篇:maven生成项目慢解决办法


下一篇:Oracle学习笔记 第二天 重做日志文件、RMAN对数据库进行备份和恢复