Python趣味爬虫之用Python实现智慧校园一键评教


Posted in Python onMay 28, 2021

一、安装selenium库

问题1:什么是selenium模块?

  • 基于浏览器自动化的一个模块。

 问题2:selenium模块有什么作用呢?

  • 便捷地获取网站中动态加载的数据
  • 便捷地实现模拟登录

问题3:环境安装

pip install selenium

二、下载一个浏览器的驱动程序(谷歌浏览器)

1.下载路径

http://chromedriver.storage.googleapis.com/index.html

2.驱动程序和浏览器的映射关系(谷歌浏览器)

方法1:[不推荐]

在浏览器地址栏输入:chrome://version/

Python趣味爬虫之用Python实现智慧校园一键评教

  • 复制版本号,只取前三节

示例:版本号为90.0.4430.212,只需复制90.0.4430

示例:https://chromedriver.storage.googleapis.com/LATEST_RELEASE_90.0.4430

博主尝试了没有成功

Python趣味爬虫之用Python实现智慧校园一键评教

方法2:[推荐]

安装webdriver-manager

pip install webdriver-manager

运行如下代码

import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
# from webdriver_manager.microsoft import EdgeChromiumDriverManager
options = webdriver.ChromeOptions()
options.add_argument('--ignore-certificate-errors')
driver = webdriver.Chrome(ChromeDriverManager().install(),chrome_options=options)
# driver = webdriver.Edge(EdgeChromiumDriverManager().install())
driver.get('https://www.baidu.com/s?wd=123')
driver.close()

很简单,省很多事

三、智慧校园评教实现

1.新建python文件导入相关包

from selenium import webdriver
import time
from lxml import etree

2. 使用selenium打开登录页面

# 实例化一个浏览器对象
bro = webdriver.Chrome(executable_path='./chromedriver')# 驱动程序所在路径
# 让浏览器发起一个指定url对应请求
bro.get('http://sso.cqcet.edu.cn/login')

Python趣味爬虫之用Python实现智慧校园一键评教

3.录入用户名密码,点击登录按钮实现登录

# 标签定位
username_input = bro.find_element_by_id('username')
password_input = bro.find_element_by_id('password')
# 标签交互
username_input.send_keys('**********')# 智慧校园账号
password_input.send_keys('**********')# 智慧校园密码
# 点击登入按钮
btn = bro.find_element_by_class_name('logon-btn')
btn.click()
time.sleep(2)# 停顿2s

Python趣味爬虫之用Python实现智慧校园一键评教

4.进入教学评价系统

# 点击学评教管理
bro.get('http://ossc.cqcet.edu.cn/xg/teaching/student/index/teach')
bro.find_element_by_class_name('nav-label').click()
time.sleep(2)
# 点击学生评教
bro.get('http://ossc.cqcet.edu.cn/xg/teaching/student/xskb')
# page_source获取浏览器当前页面的页面源码数据
page_text = bro.page_source

Python趣味爬虫之用Python实现智慧校园一键评教

5.实现评教操作

# 解析onclick里面的内容
tree = etree.HTML(page_text)
onclick_list = tree.xpath('//*[@id="bootstrap-table"]/tbody//a/@onclick')
print(onclick_list)
for onclick in onclick_list:
    if onclick[0:15] != "checkEvaluation":
        bro.execute_script(onclick)
        time.sleep(1)
        bro.find_element_by_class_name('layui-layer-btn0').click()
    time.sleep(1)

time.sleep(5)
bro.quit()

Python趣味爬虫之用Python实现智慧校园一键评教

6.完成效果图

Python趣味爬虫之用Python实现智慧校园一键评教

四、附录

以下为实现谷歌无头浏览器和反检测代码,供参考

from selenium import webdriver
from time import sleep
#实现无可视化界面
from selenium.webdriver.chrome.options import Options
#实现规避检测
from selenium.webdriver import ChromeOptions

#实现无可视化界面的操作
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')

#实现规避检测
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])

#如何实现让selenium规避被检测到的风险
bro = webdriver.Chrome(executable_path='./chromedriver',chrome_options=chrome_options,options=option)

#无可视化界面(无头浏览器) phantomJs
bro.get('https://www.baidu.com')

print(bro.page_source)
sleep(2)
bro.quit()

到此这篇关于Python趣味挑战之用Python实现智慧校园一键评教的文章就介绍到这了,更多相关Python智慧校园一键评教内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python网络编程学习笔记(九):数据库客户端 DB-API
Jun 09 Python
Python中super关键字用法实例分析
May 28 Python
Python做简单的字符串匹配详解
Mar 21 Python
python数据结构之链表的实例讲解
Jul 25 Python
Python3操作SQL Server数据库(实例讲解)
Oct 21 Python
TensorFlow实现Batch Normalization
Mar 08 Python
python生成带有表格的图片实例
Feb 03 Python
Django 缓存配置Redis使用详解
Jul 23 Python
python中eval与int的区别浅析
Aug 11 Python
pygame实现俄罗斯方块游戏(AI篇2)
Oct 29 Python
自学python用什么系统好
Jun 23 Python
python正则表达式的懒惰匹配和贪婪匹配说明
Jul 13 Python
Pytorch 如何加速Dataloader提升数据读取速度
在前女友婚礼上,用Python破解了现场的WIFI还把名称改成了
pytorch DataLoader的num_workers参数与设置大小详解
May 28 #Python
Flask搭建一个API服务器的步骤
May 28 #Python
Python趣味挑战之给幼儿园弟弟生成1000道算术题
May 28 #Python
解决Python中的modf()函数取小数部分不准确问题
May 28 #Python
利用Python+OpenCV三步去除水印
You might like
php安装ssh2扩展的方法【Linux平台】
2016/07/20 PHP
js event事件的传递与冒泡处理
2009/12/06 Javascript
JavaScript prototype属性使用说明
2010/05/13 Javascript
JavaScript中的Array对象使用说明
2011/01/17 Javascript
JS 修改URL参数(实现代码)
2013/07/08 Javascript
js中将String转换为number以便比较
2014/07/08 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
2015/12/03 Javascript
JavaScript中各种引用类型的常用操作方法小结
2016/05/05 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
微信小程序之事件交互操作实例分析
2018/12/03 Javascript
微信小程序实现滑动切换自定义页码的方法分析
2018/12/29 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
Vue 简单实现前端权限控制的示例
2020/12/25 Vue.js
[44:10]2018DOTA2亚洲邀请赛 4.5 淘汰赛 EG vs VP 第一场
2018/04/06 DOTA
[00:38]TI珍贵瞬间系列(二):笑
2020/08/26 DOTA
Python交换变量
2008/09/06 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
Python中的 enum 模块源码详析
2019/01/09 Python
Python3 导入上级目录中的模块实例
2019/02/16 Python
Python下简易的单例模式详解
2019/04/08 Python
Mac在python3环境下安装virtualwrapper遇到的问题及解决方法
2019/07/09 Python
简单了解python的一些位运算技巧
2019/07/13 Python
python如何将多个PDF进行合并
2019/08/13 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
python 多线程死锁问题的解决方案
2020/08/25 Python
HTML5标签嵌套规则详解【必看】
2016/04/26 HTML / CSS
Quiksilver美国官网:始于1969年的优质冲浪服和滑雪板外套
2020/04/20 全球购物
如何理解委托
2012/01/06 面试题
Servlet方面面试题
2016/09/28 面试题
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL
安装Windows Server 2012 R2企业版操作系统并设置好相关参数
2022/04/29 Servers