selenium模拟浏览器查询导出参考文献

news2024/11/20 4:48:26

通过使用Selenium和BeautifulSoup,在CNKI网站上,以"知识图谱"为关键词,通过自动化工具在搜索页面提取相关文章信息。点击清楚并全选进行文献导出,随后从导出页面和管理导出的页面提取参考文献。

浏览器及WebDriver下载
https://googlechromelabs.github.io/chrome-for-testing/#stable

放到/usr/local/bin (mac的配置)

mv chromedriver /usr/local/bin
cd /usr/local/bin
xattr -d com.apple.quarantine chromedriver

提取文献代码

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

def driver_open(driver, key_word):
    url = "https://www.cnki.net/"
    driver.get(url)
    time.sleep(2)
    driver.find_element(By.CSS_SELECTOR ,'#txt_SearchText').send_keys(key_word)
    time.sleep(2)
    # 点击搜索按钮
    driver.find_element(By.CSS_SELECTOR ,'body > div.wrapper.section1 > div.searchmain > div > div.input-box > input.search-btn').click()
    time.sleep(5)
    driver.find_element(By.CSS_SELECTOR,'#briefBox > div:nth-child(1) > div > div.toolbar-col > div.checkcount > a').click()
    time.sleep(2)
    driver.find_element(By.CSS_SELECTOR,'#selectCheckAll1').click()
    driver.find_element(By.CSS_SELECTOR,'#batchOpsBox > li:nth-child(2) > a').click()
    driver.find_element(By.CSS_SELECTOR,'#batchOpsBox > li:nth-child(2) > ul > li.export > a').click()
    driver.find_element(By.CSS_SELECTOR,'#batchOpsBox > li:nth-child(2) > ul > li.export > ul > li:nth-child(1) > a').click()
    time.sleep(2)
    url1="https://kns.cnki.net/dm8/manage/export.html?language=CHS&uniplatform=NZKPT"
    driver.get(url1)
    time.sleep(5)
    driver.find_element(By.CSS_SELECTOR,'#result > ul').click()
    content = driver.page_source.encode('utf-8')
    soup = BeautifulSoup(content, 'lxml')
    ul = soup.find_all('ul')
    ul = BeautifulSoup(str(ul[5]), 'lxml')
    lis = ul.find_all('li')
    text=""
    for li in lis:
        text = text + li.get_text().strip().replace(" ","")+"\n"
    return text
if __name__ == '__main__':
    chrome_options= webdriver.ChromeOptions()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable‐gpu')
    path="/usr/local/bin"
	chrome_options.binary_location = path
    driver = webdriver.Chrome(options=chrome_options)
    text = driver_open(driver, '知识图谱') 
    print(text)

运行结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1389501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

集合框架(一)

集合体系概述 集合体系结构 Collection代表单列集合,每个元素(数据)只包含一个值。Map代表双列集合,每个元素包含两个值(键值对)。 Collection集合体系 Collection集合特点 List系列集合:添加…

主流进销存系统有哪些?企业该如何选择进销存系统?

主流进销存系统有哪些?企业该如何选择进销存系统? “永久免费”的软件,这个可能还真不太可能有。而且就算有,也只能说是相对免费。 因为要么就是数据存量有限,要么就是功能有限数据、信息都不保障,并且功…

最小矩阵宽度 - 华为OD统一考试

OD统一考试(C卷) 分值: 200分 题解: Java / Python / C++ 题目描述 给定一个矩阵,包含N*M个整数,和一个包含K个整数的数组。 现在要求在这个矩阵中找一个宽度最小的子短阵,要求子矩阵包含数组中所有的整数。 输入描述 第一行输入两个正整数 N, M 表示矩阵大小。 接下…

Go后端开发 -- 面向对象特征:结构体 继承 多态 interface

Go后端开发 – 面向对象特征:结构体 && 继承 && 多态 && interface 文章目录 Go后端开发 -- 面向对象特征:结构体 && 继承 && 多态 && interface一、Go的结构体1.结构体的声明和定义2.结构体传参 二、将…

嵌入式一开始要怎么学?

今日话题,嵌入式一开始要怎么学?废话不多说,我认为学习嵌入式编程无需观看视频,拥有好的文档比视频更有帮助。掌握一门编程语言是学好嵌入式的关键。现今有许多计算机编程语言可供选择,比如C语言和C等。如果你刚刚入门…

CDN(内容分发网络)和DNS(域名系统)的区别

CDN关注于提高网站的访问速度和性能,主要通过在全球范围内分布的服务器缓存内容来实现,而DNS则是将域名转换为IP地址的系统,是互联网上进行任何形式的数据交换和通信的基础。 CDN(内容分发网络) 目的:CDN的…

查看centos的CPU、内存、磁盘空间等配置信息

目录 查看CPU/proc/cpuinfo中的信息 查看内存/proc/meminfo中的信息 查看磁盘空间df 命令du命令使用fdisk命令 查看CPU /proc/cpuinfo中的信息 前置: [ltkjltkj front]$ cat /proc/cpuinfo| grep "physical id" physical id : 0 physical id : 0 physi…

GO——gin中间件和路由

中间件 参考:https://learnku.com/articles/66234 结构 中间件是函数中间件函数被放在调用链上调用链的末尾是路由path对应的函数 执行过程 net/http包调用到gin的serverHTTP 参考:go/pkg/mod/github.com/gin-gonic/ginv1.7.7/gin.go:506 通过path找到…

Qt根据单价计算总价与进制转换

1.相关说明 二进制、十进制、十六进制间的相互转换 2.界面绘制 3.相关主要代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete …

学习JavaEE的日子 day12 构造方法 类的制作

Day12 需求:创建人类的对象,并操作对象 分析: 人类 - Person 属性:name、sex、age 方法:eat、sleep 场景:创建多个对象,去操作对象 //测试类:该类中有main方法,测试我们写…

进程切换和是Linux2.6内核中进程调度的算法

正文开始前给大家推荐个网站,前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 进程切换 进程并发就需要做到进程切换,一个CPU一套寄存器但是需要运行的进程有很多…

KT148A语音芯片智能锁扩展语音地址以及如何支持大量小文件的打包

一、语音芯片应用于智能锁的需求 智能锁的语音播放需求中,有很多需要多国语言合并在一起的需求 其中语音文件数多,并且每个语音文件小的特点 如果使用OTP的语音芯片,就很麻烦,因为用户不可烧录,调试也很繁琐 同时大…

μ综合设计控制器

μ综合设计控制器是一种基于μ分析的控制器设计方法,用于提高控制器的鲁棒性和性能。μ分析是一种数学工具,用于描述和比较控制系统在不同参数变化下的性能。通过μ综合设计,可以综合运用各种控制策略,以达到更好的控制效果。 μ…

pycharm debug显示的变量过多

问题: https://blog.csdn.net/Hodors/article/details/117535731 解决方法: 把"Show console variables by default"前面的勾取消掉就行 参考: https://stackoverflow.com/questions/48969556/hide-console-variables-in-pychar…

C语言--质数算法和最大公约数算法

文章目录 1.在C语言中,判断质数的常见算法有以下几种:1.1.试除法(暴力算法):1.2.优化试除法:1.3.埃拉托色尼筛法:1.4.米勒-拉宾素性检验:1.5.线性筛法:1.6.费马小定理&am…

k8s---配置资源管理

目录 配置资源管理的方式 secret pod如何来引用secret??? 陈述式创建: 声明式创建 Secret创建加密文件 使用token挂载 环境变量使用 docker-registry ConfigMap 陈述式 热更新 总结: 配置资源管理的方式 …

OJAC近屿智能带你解读:AIGC必备知识之Lang Chain

Look!👀我们的大模型商业化落地产品📖更多AI资讯请👉🏾关注Free三天集训营助教在线为您火热答疑👩🏼‍🏫 Lang Chain, 是一种先进的语言模型链技术,旨在通过串联多个专业…

js逆向第21例:猿人学第20题新年挑战

文章目录 一、前言二、定位加密参数1、定位wasm加密2、反编译wasm3、定位sign加密三、代码实现四、参考文献一、前言 新春福利:抓取这5页的数字,计算加和并提交结果 二、定位加密参数 通过get请求地址可以看到需要搞定参数有page、sign、t如下图: 进入堆栈不难发现这样一…

互联网加竞赛 基于机器视觉的12306验证码识别

文章目录 0 简介1 数据收集2 识别过程3 网络构建4 数据读取5 模型训练6 加入Dropout层7 数据增强8 迁移学习9 结果9 最后 0 简介 🔥 优质竞赛项目系列,今天要分享的是 基于机器视觉的12306验证码识别 该项目较为新颖,适合作为竞赛课题方向…

驾驭车联网的力量:深入车联网网络架构

车联网,作为移动互联网之后的新风口,以网联思想重新定义汽车,将其从简单的出行工具演化为个人的第二空间。车联网涵盖智能座舱和自动驾驶两大方向,构建在网联基础上,犀思云多年深度赋能汽车行业,本文将从车…