IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 利用 Python 和 Selenium 自动下载知网期刊文件 -> 正文阅读

[Python知识库]利用 Python 和 Selenium 自动下载知网期刊文件


安装 Python 和Selenium 的过程就不讲了,下面直接上代码。目标是下载知网某个期刊某一期的全部文件(PDF格式)。这里以 《教育研究》这个期刊为例,下载其中2021年第5期的所有文献。

1 下载 Chrome 的 Webdriver

想要用 Selenium 操控浏览器,首先需要下载浏览器对应的WebDriver。Chrome 对应的 WebDriver 可以在
ChromeWebdriver下载地址
里面下载,注意浏览器的版本和 WebDriver 的版本必须匹配,不然可能会报错。谷歌浏览器的版本在 设置 → \rightarrow 关于Chrome 里面查看。

查看浏览器版本

查看浏览器版本

2 代码

2.1 导入相关的包

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

如果用的 Selenium 的版本是 Selenium4,那么第 2 行代码是需要的。如果是更低版本,那么可以不要。

2.2 设置 WebDriver

path='D:\Webdriver\chromedriver_win32\chromedriver'

my_browser=webdriver.Chrome(executable_path=path)
my_browser.implicitly_wait(15)
my_browser.get('https://navi.cnki.net/knavi/journals/WGJY/detail?uniplatform=NZKPT')

有几个点需要注意:

  1. path 指的是下载的 WebDriver 所在的目录,比如我这里是在 ‘D:\Webdriver\chromedriver_win32’ 里面,但是目录后面需要带上 WebDriver 的不加后缀.exe文件名,比如我的 webdriver 的文件名本来是 ‘chromedriver.exe’,在代码里只能写 ‘D:\Webdriver\chromedriver_win32\chromedriver’,不加 .exe !
  2. 这个 implicitly_wait() 里面是程序在操作时需要等待的秒数。具体说就是,程序的执行的速度是非常快的,但是网页的加载是需要时间的。比如说用程序去寻找网页上一个名为 ‘button’ 的元素,程序可能在网页还没有加载出来的时候就已经完成了寻找的过程,但是这个时候,因为你的网页还没加载好,所以肯定是找不到的,会报错。这个 implicitly_wait(15) 的意思就是,程序如果在网页上找不到指定的元素,就每隔半秒寻找一次,如果15秒还没找到,就报错。
  3. ‘https://navi.cnki.net/knavi/journals/WGJY/detail?uniplatform=NZKPT’ 是这个期刊的网站,我是在教育网环境中测试的,所以可以直接下载。一般的网络不注册购买是下载不了的。

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。

2.3 找到期刊名在网页上对应元素

这个期刊网站是这样的
期刊网站

代码如下

year='2021';
vol='05';

# 点击相应的年份和期数
my_browser.find_element(By.ID,'yq'+year+vol).click();

# 等2s,等网页加载好
time.sleep(2)

# 找到期刊所在的框
paperList = my_browser.find_element(By.ID,'CataLogContent');

# 在这个框里找到期刊名对应的元素
papers=paperList.find_elements(By.CSS_SELECTOR,'.name > a');

# 打印一下期刊的数量
len(papers)

2.4 下载期刊

我这里下载的步骤是这样的,

  1. 打开所有的期刊的下载页;
  2. 关掉最开始的期刊所在网页;
  3. 依次点击每个下载页面的 “PDF下载” 按钮。

代码如下:

# 点击打开所有的期刊下载页
for paper in papers:
    paper.click();
    
# 关掉原有窗口
my_browser.close();

# 记录所有窗口的句柄
currentHandles=my_browser.window_handles;

# 依次点击每个窗口的PDF下载
for my_handle in currentHandles:
    my_browser.switch_to_window(my_handle);
    pdfDown = my_browser.find_element_by_id('pdfDown')
    time.sleep(3); # 知网反应比较慢,需要等几秒
    pdfDown.click();
    time.sleep(5); # 知网反应比较慢,需要等几秒

下载完成,关闭浏览器。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-11-20 18:21:00  更:2021-11-20 18:21:56 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:30:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码