# Python数据挖掘-CNKI知网文章自动下载PDF及refwork **Repository Path**: zhang_jie_lin/web-data-mining-final-cnki ## Basic Information - **Project Name**: Python数据挖掘-CNKI知网文章自动下载PDF及refwork - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2021-07-02 - **Last Updated**: 2022-06-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # web-数据挖掘-期末-CNKI ## 项目描述 ### 主题:媒体融合+人工智能大数据 ### 数据目标: * 所爬取的数据预计用于“媒体融合+人工智能大数据”主题的数据分析 * refworks文件——结合VOSviewer数据可视化 * PDF文献原文——用于引文分析 ### 数据结果: * 数据来源说明:出媒体融合+人工智能大数据主题下,来自北大核心、EI、CSD、SCI、CSSCI期刊的文献 * 上述所有文献的refworks文件 * 上述所有文件的PDF格式原文 ## 主要思路 ### 导出refworks * 全选——>翻页——>清除已选文章,继续翻页 ### 下载PDF ### 逻辑流程图 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0704/004121_1c698085_5329187.png "逻辑流程图.png") ### ## 踩坑合集 ### 指定浏览器的下载路径: ``` opts = webdriver.ChromeOptions() # opts.add_argument('--incognito') # 无痕模式 prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory': 'D:\\爬虫\\知网文章-PDF'} opts.add_experimental_option('prefs', prefs) ``` ### 网页截图方法 ``` # 截图 element=driver.find_element_by_xpath('//*[@id="vImg"]') # 选择存储路径 element.screenshot('C:\\Users\\zjl\\Desktop\\web数据挖掘\\web_img\\save.jpg') ``` ### 上传文件并进行base64位编码 ``` with open(r'C:\\Users\\zjl\\Desktop\\web数据挖掘\\web_img\\save.jpg', 'rb') as f: f1 = f.read() f1_base64 = str(base64.b64encode(f1), 'utf-8') ``` ### 查询文件夹下文件 ``` def check_file(): E = os.listdir("D:\\爬虫\\测试") file_nmb = len(E) return file_nmb ``` ### 超时处理 * 由于网络或是其他不可抗力,网页常常加载缓慢,我们熟悉的报错:Timeout,就是因为这个。 ``` # 加载时间过长 def timeout(): print("进行超时处理") driver.set_page_load_timeout(10) while True: try: new_url = driver.current_url driver.get(new_url) break except: pass ``` ### 出现白屏/弹窗 * “并发数已满”,“下载链接已过时”…… * 其他的错误情况有很多,我们很难预计【比如我尝试去识别是否出现弹窗,点击确认后在进行下一步操作】 * 但是!正确的情况之一个,那就是页面中存在验证码的图片,所以设置判断的条件时,应该从这方面入手,减少麻烦。 ### 封装函数 * 在循环与判断多的代码中(发现会写重复代码or需要跳出多层循环),尽量将功能在外部封装成函数。 ### 验证码 * 使用API进行OCR图像识别 * 讯飞——精度不高,但文档说明清晰,适合初学者学习 * 判断验证码是否正确——下载路径的文件夹中文章数是否增加 #### 验证码的几种情况: * 验证码正确——下载成功,页面保持填写验证码时的页面,页面无变化 * 验证码正确——未下载成功,页面无变化或是白屏 * 输入的验证码(OCR识别出的结果)不满足“仅由数字或字母组成”and"四个字符"的条件——验证码不自动更换,出现提示词,页面不变 * 页面中的验证码不自动更换就需要“点击验证码图片”,手动更换 * 输入的验证码,符合上述条件,但不正确——验证码自动更换 ### 其他 * 进知网时,先检查登录状态!未登录无法下载 * 知网专业检索的检索式书写难度大,使用者应该需要注意 ## 数据可视化 ![数据可视化](https://images.gitee.com/uploads/images/2021/0704/000536_d9488b01_5329187.png "VOS.png")