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实现Tab自动补全和历史命令管理的方法
Mar 12 Python
详解Python如何获取列表(List)的中位数
Aug 12 Python
Django 视图层(view)的使用
Nov 09 Python
Python Scapy随心所欲研究TCP协议栈
Nov 20 Python
python中使用 xlwt 操作excel的常见方法与问题
Jan 13 Python
wxPython绘图模块wxPyPlot实现数据可视化
Nov 19 Python
pytorch实现MNIST手写体识别
Feb 14 Python
基于Python3.7.1无法导入Numpy的解决方式
Mar 09 Python
Selenium及python实现滚动操作多种方法
Jul 21 Python
python opencv pytesseract 验证码识别的实现
Aug 28 Python
python自动化测试三部曲之unittest框架的实现
Oct 07 Python
python 实现的截屏工具
May 08 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
URL Rewrite的设置方法
2007/01/02 PHP
PHP开发不能违背的安全规则 过滤用户输入
2011/05/01 PHP
php的socket编程详解
2016/11/20 PHP
php连接mysql数据库
2017/03/21 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
PHP中isset、empty的用法与区别示例详解
2020/11/05 PHP
来自国外的30个基于jquery的Web下拉菜单
2012/06/22 Javascript
JQuery实现绚丽的横向下拉菜单
2013/12/19 Javascript
JavaScript中的DSL元编程介绍
2015/03/15 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
jQuery对table表格进行增删改查
2020/12/22 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
2017/06/08 Javascript
使用vue的v-for生成table并给table加上序号的实例代码
2017/10/27 Javascript
JS基于for语句编写的九九乘法表示例
2018/01/04 Javascript
javascript实现最长公共子序列实例代码
2018/02/05 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
vscode配置vue下的es6规范自动格式化详解
2019/03/20 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
JS实现可用滑块滑动的缓动图代码
2019/09/01 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
React.js组件实现拖拽排序组件功能过程解析
2020/04/27 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
python3.x上post发送json数据
2018/03/04 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
python数据分析:关键字提取方式
2020/02/24 Python
使用python无账号无限制获取企查查信息的实例代码
2020/04/17 Python
Nike台湾官方商店:Nike.com (TW)
2017/08/16 全球购物
C#里面如何倒序排列一个数组的元素?
2013/06/21 面试题
竞聘副主任科员演讲稿
2014/01/11 职场文书
自我介绍演讲稿
2014/01/15 职场文书
小学新学期教师寄语
2014/01/18 职场文书
大学辅导员事迹材料
2014/02/05 职场文书
初一英语教学反思
2016/02/15 职场文书