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中用max()方法求最大值的介绍
May 15 Python
Python常用库推荐
Dec 04 Python
python全栈要学什么 python全栈学习路线
Jun 28 Python
python绘制双Y轴折线图以及单Y轴双变量柱状图的实例
Jul 08 Python
python语言线程标准库threading.local解读总结
Nov 10 Python
Python3搭建http服务器的实现代码
Feb 11 Python
k-means 聚类算法与Python实现代码
Jun 01 Python
python中执行smtplib失败的处理方法
Jul 01 Python
python 数据类型强制转换的总结
Jan 25 Python
关于探究python中sys.argv时遇到的问题详解
Feb 23 Python
Python 用户输入和while循环的操作
May 23 Python
python区块链持久化和命令行接口实现简版
May 25 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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
PHP分页函数代码(简单实用型)
2010/12/02 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
php foreach如何跳出两层循环(详解)
2016/11/05 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
基于jQuery的history历史记录插件
2010/12/11 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
js 分页全选或反选标识实现代码
2011/08/09 Javascript
JavaScript 判断用户输入的邮箱及手机格式是否正确
2013/12/08 Javascript
js实现完全自定义可带多级目录的网页鼠标右键菜单方法
2015/02/28 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
2016/05/14 Javascript
jQuery中的ready函数与window.onload谁先执行
2016/06/21 Javascript
JS动态加载脚本并执行回调操作
2016/08/24 Javascript
jquery获取easyui日期控件的值实现方法
2016/11/09 Javascript
JavaScript实现图片轮播组件代码示例
2016/11/22 Javascript
JavaScript仿聊天室聊天记录
2016/12/27 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
详解nodejs微信公众号开发——1.接入微信公众号
2017/04/10 NodeJs
详解webpack-dev-server使用http-proxy解决跨域问题
2018/01/13 Javascript
微信小程序支付前端源码
2018/08/29 Javascript
vue 使用原生组件上传图片的实例
2020/09/08 Javascript
[13:21]DOTA2国际邀请赛采访专栏:RSnake战队国士无双,Fnatic.Fly
2013/08/06 DOTA
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
Python竟能画这么漂亮的花,帅呆了(代码分享)
2017/11/15 Python
Python操作json的方法实例分析
2018/12/06 Python
python实现字符串加密成纯数字
2019/03/19 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
史蒂夫·马登加拿大官网:Steve Madden加拿大
2017/11/18 全球购物
网站设计师的岗位职责
2013/11/21 职场文书
《三峡》教学反思
2014/03/01 职场文书
四风问题自我剖析材料
2014/10/07 职场文书
2014年党员发展工作总结
2014/12/02 职场文书
欢送领导祝酒词
2015/08/12 职场文书
Nginx+Tomcat负载均衡多实例详解
2022/04/11 Servers
Python创建SQL数据库流程逐步讲解
2022/09/23 Python