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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
全面解读Python Web开发框架Django
Jun 30 Python
Python中urllib2模块的8个使用细节分享
Jan 01 Python
Python中使用装饰器时需要注意的一些问题
May 11 Python
python list转矩阵的实例讲解
Aug 04 Python
浅谈python连续赋值可能引发的错误
Nov 10 Python
selenium3+python3环境搭建教程图解
Dec 07 Python
django多文件上传,form提交,多对多外键保存的实例
Aug 06 Python
基于Python脚本实现邮件报警功能
May 20 Python
Django多个app urls配置代码实例
Nov 26 Python
使用Selenium实现微博爬虫(预登录、展开全文、翻页)
Apr 13 Python
在Python中如何使用yield
Jun 07 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基础知识:类与对象(1)
2006/12/13 PHP
PHP empty函数报错解决办法
2014/03/06 PHP
两种设置php载入页面时编码的方法
2014/07/29 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
PHP查看SSL证书信息的方法
2016/09/22 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
基于javascript数组实现图片轮播
2016/05/02 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
JS实现css hover操作的方法示例
2017/04/07 Javascript
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
总结javascript三元运算符知识点
2018/09/28 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
JS实现多功能计算器
2020/10/28 Javascript
python 写的一个爬虫程序源码
2016/02/28 Python
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
Python实现获取命令行输出结果的方法
2017/06/10 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
一份python入门应该看的学习资料
2018/04/11 Python
Python快速查找list中相同部分的方法
2018/06/27 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
python excel和yaml文件的读取封装
2021/01/12 Python
一站式跨境收款解决方案:Payoneer(派安盈)
2018/09/06 全球购物
aden + anais英国官网:美国婴儿贴身用品品牌
2019/09/08 全球购物
什么是.net
2015/08/03 面试题
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
2014年廉洁自律承诺书
2014/05/26 职场文书
群众路线个人整改方案
2014/10/25 职场文书
致地震灾区的慰问信
2015/03/23 职场文书
2015年个人实习工作总结
2015/05/28 职场文书
计算机教师工作总结
2015/08/13 职场文书
生活小常识广播稿
2015/08/19 职场文书
导游词之西安骊山
2019/12/20 职场文书
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android