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进阶教程之循环相关函数range、enumerate、zip
Aug 30 Python
用Python的Django框架来制作一个RSS阅读器
Jul 22 Python
Python科学计算之NumPy入门教程
Jan 15 Python
Python3 集合set入门基础
Feb 10 Python
Python requests获取网页常用方法解析
Feb 20 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
May 26 Python
详解Python设计模式之策略模式
Jun 15 Python
将tf.batch_matmul替换成tf.matmul的实现
Jun 18 Python
python一些性能分析的技巧
Aug 30 Python
用python写一个带有gui界面的密码生成器
Nov 06 Python
全网非常详细的pytest配置文件
Jul 15 Python
Python sklearn分类决策树方法详解
Sep 23 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中使用explode查找某个字符是否存在的方法
2011/07/12 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
2012/07/20 PHP
php限制ip地址范围的方法
2015/03/31 PHP
php源码分析之DZX1.5随机数函数random用法
2015/06/17 PHP
php fseek函数读取大文件两种方法
2016/10/12 PHP
php json转换相关知识(小结)
2018/12/21 PHP
Javascript入门学习资料收集整理篇
2008/07/06 Javascript
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
jquery中通过父级查找进行定位示例
2013/06/28 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
2013/12/05 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
你未必知道的JavaScript和CSS交互的5种方法
2014/04/02 Javascript
node.js中的fs.lstat方法使用说明
2014/12/16 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
jQueryUI Datepicker组件设置日期高亮
2016/10/13 Javascript
element UI upload组件上传附件格式限制方法
2018/09/04 Javascript
AngularJS实现的自定义过滤器简单示例
2019/02/02 Javascript
webpack 动态批量加载文件的实现方法
2020/03/19 Javascript
sharp.js安装过程中遇到的问题总结
2020/04/02 Javascript
vue-cli设置publicPath小记
2020/04/14 Javascript
在vue中配置不同的代理同时访问不同的后台操作
2020/09/11 Javascript
解决vant中 tab栏遇到的坑 van-tabs
2020/11/04 Javascript
Python二叉搜索树与双向链表转换实现方法
2016/04/29 Python
使用Python的Scrapy框架十分钟爬取美女图
2016/12/26 Python
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
时尚、社区、科技:SEVENSTORE
2019/04/26 全球购物
NET程序员上机面试题
2015/05/23 面试题
动物科学专业求职信
2014/07/27 职场文书
检讨书1000字
2014/10/11 职场文书
办公楼租房协议书范本
2014/11/25 职场文书
材料员岗位职责范本
2015/04/11 职场文书
新闻报道稿范文
2015/07/23 职场文书