selenium 校园网自动连接
由于实验室电脑连接的校园网总是隔一段时间不操作后就自动断网,所以使用webdriver来实现自动登录的操作。
首先,对于选择的浏览器需要用相应的驱动才能实现对其操作,比如我使用的Chrome,就下载相应版本的ChromeDriver。不同系统下怎么配环境参考:
然后打开校园网登录界面,在网站的源码里找到你需要的登录信息
例如我的登录界面需要输入用户名、密码,选择线路、点击登录。
使用selenium.webdriver来定位这些元素,一般有id、name、class这些供选择。
关于使用selenium定位元素参考:
在选择线路的方法上,使用selenium中的Select,我是用的是最简单的方法,直接选取下拉菜单中的index(从0开始)具体方法参考:
上代码
#coding:utf-8 __author__ = sl from selenium import webdriver from selenium.webdriver.support.ui import Select from bs4 import BeautifulSoup import time import requests username_str = "用户名" password_str = "密码" class Login: def login(self): try: driver = webdriver.Chrome() driver.get("http://ngw.bupt.edu.cn/") time.sleep(3) username_input = driver.find_element_by_name("user") password_input = driver.find_element_by_name("pass") line_input = driver.find_element_by_name("line")//这里是选择线路 login_button = driver.find_element_by_class_name("el-button") username_input.send_keys(username_str) password_input.send_keys(password_str) line_select = Select(line_input) line_select.select_by_index(3)//select_by_index选择的是下拉菜单下第四个选项 login_button.click() //点击 except: print(self.getCurrentTime(), u"登陆函数异常") finally: driver.close() #获取当前时间 def getCurrentTime(self): return time.strftime([%Y-%m-%d %H:%M:%S],time.localtime(time.time())) #判断当前是否可以连网 def canConnect(self): try: baidu_request=requests.get("http://www.baidu.com") if(baidu_request.status_code==200): baidu_request.encoding = utf-8 baidu_request_bsObj = BeautifulSoup(baidu_request.text, html.parser) baidu_input = baidu_request_bsObj.find(value="百度一下") if baidu_input==None: return False return True else: return False except: print (error) #主函数 def main(self): print (self.getCurrentTime(), u"Hi,SEU自动登陆脚本正在运行") while True: while True: can_connect = self.canConnect() if not can_connect: print (self.getCurrentTime(),u"断网了...") try: self.login() except: print(self.getCurrentTime(), u"浏览器出了bug") finally: time.sleep(2) if self.canConnect(): print(self.getCurrentTime(), u"重新登陆成功") else: print(self.getCurrentTime(), u"登陆失败,再来一次") else: print (self.getCurrentTime(), u"一切正常...") time.sleep(5) time.sleep(1) time.sleep(self.every) login = Login() login.main()