Python趣味爬虫之用Python实现智慧校园一键评教
作者:Smartloe 发布时间:2022-02-07 17:53:52
标签:Python,智慧校园,一键评教
一、安装selenium库
问题1:什么是selenium模块?
基于浏览器自动化的一个模块。
问题2:selenium模块有什么作用呢?
便捷地获取网站中动态加载的数据
便捷地实现模拟登录
问题3:环境安装
pip install selenium
二、下载一个浏览器的驱动程序(谷歌浏览器)
1.下载路径
http://chromedriver.storage.googleapis.com/index.html
2.驱动程序和浏览器的映射关系(谷歌浏览器)
方法1:[不推荐]
在浏览器地址栏输入:chrome://version/
复制版本号,只取前三节
示例:版本号为90.0.4430.212
,只需复制90.0.4430
将复制的数字加到
https://chromedriver.storage.googleapis.com/LATEST_RELEASE_
后面
示例:https://chromedriver.storage.googleapis.com/LATEST_RELEASE_90.0.4430
博主尝试了没有成功
方法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')
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
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
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()
6.完成效果图
四、附录
以下为实现谷歌无头浏览器和反检测代码,供参考
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()
来源:https://blog.csdn.net/qq_45473330/article/details/117197531


猜你喜欢
- 一、下载安装官网下载社区版dmg安装文件: https://dev.mysql.com/downloads/mysql/1、执行安装文件,按
- 在实际的应用中,Access做应用程序时,经常会做成"数据"和"程序"两个数据库,"数据&
- 最终运行效果:OCR(optical character recognition)文字识别是指电子设备(例如扫描仪或数码相机)检查纸上打印的
- Vue.js使用自定义事件的表单输入组件自定义事件可以用来创建自定义的表单输入组件,使用 v-model 来进行数据双向绑定。要牢记:<
- 引言上一篇介绍了axios的简单封装,知道了axios * 的应用场景和方法,今天来看一下对于响应时间过长且请求次数过高的情况 * 如何处理
- 场景当我提交了本次修改到本地和远程分支后,发现我本次提交还少了一些修改内容,或者说本次修改是完全错误的,然而也push到远程仓库去了。如何回
- 这篇文章主要介绍了python 利用jinja2模板生成html代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考
- 每次的大版本更新为全世界的摄影、影视、设计师提供了一系列生产力工具电脑配置符合要求的小伙伴可以尝鲜啦。软件版本越高对电脑的配置要求就越高。目
- python是支持多线程的,主要是通过thread和threading这两个模块来实现的。thread模块是比较底层的模块,threadin
- 前言Python 开发者可能都听说过鸭子类型和猴子补丁这两个词,即使没听过,也大概率写过相关的代码,只不过并不了解其背后的技术要点是这两个词
- 译注:开发人员如何从无休止的需求、项目进度中摆脱烦躁的心态,这是每个人都值得思考的话题。无意间看见了这篇文章,恐于太长遂将其精简翻译,错误之
- 在IE比较简单,大家都知道用setHomePage来设置,懒人写法:<a href="#setHomePage"
- 什么叫模板继承呢在我的理解就是:在前端页面中肯定有很多页面中有很多相同的地方,比如页面顶部的导航栏,底部的页脚等部分,这时候如果每一个页面都
- Mysql 设置boolean类型1.tinyint类型我们创建test表,并设置其bl字段为boolean类型create table t
- 用Dreamweaver制作网页时,如果插入的图片、GIF动画、声音、视频或链接的网页是用中文命名的,在用IE浏览器浏览时可能显示不出来。以
- 酱子们大家好,今天继续分享 Python 小工具今天的小程序,可以一键完成文件整理,一起来看看吧!按照文件格式整理具体来说就是不同的文件后缀
- 有时候使用到获取本机IP,就采用以下方式进行。#!/usr/bin/python import socketimport stru
- vue Eslint校验代码报错在使用脚手架创建Vue项目时,一般会安装Eslint插件,这个主要是校验代码格式和规范用的,但是它很有点让人
- 用Flask处理图片非常容易,这一篇学习一下图片的上传、下载及展示。还是以实例代码演示为主。首先,实现一个简单的上传(过程中未做任何处理,只
- 密码保护是注册过程中的关键环节,尤其是对帐户安全级别比较高的网站,尤其在账号被盗或者涉及安全登录等问题的情况下,密码保护问题作为用户身份识别