没备案的网站可以做淘客,html5 手机 网站,企业推广网站建设报价,上海网站建设要多少钱❤️博客主页#xff1a; iknow181#x1f525;系列专栏#xff1a; Python、JavaSE、JavaWeb、CCNP#x1f389;欢迎大家点赞#x1f44d;收藏⭐评论✍ 目录
一.准备工作
1、IDE安装
2、安装Selenium
1.介绍
2.下载
3、安装pywifi
1.介绍
2.下载
4、下载浏览器驱…❤️博客主页 iknow181系列专栏 Python、JavaSE、JavaWeb、CCNP欢迎大家点赞收藏⭐评论✍ 目录
一.准备工作
1、IDE安装
2、安装Selenium
1.介绍
2.下载
3、安装pywifi
1.介绍
2.下载
4、下载浏览器驱动
二、登录校园网
1、打开浏览器
2、在网页中输入信息
3、对网页进行点击
4、打开并登录校园网
三、打开网卡
四、完整程序
五、设置开机自启动
自启动方法一系统自启动
自启动方法二注册服务
1、打包成exe文件
a.概述
b.安装 PyInstalle
c.PyInstaller生成可执行程序
2、注册服务 一.准备工作 在开始之前我们需要一些准备工作一个能够编写并运行python代码的IDE如PyCharm、安装Python第三方函数库 Selenium、安装Python第三方函数库 pywifi、安装浏览器驱动。
1、IDE安装
网上教程太多了而且也没什么大问题这里就不过多阐述了。
2、安装Selenium
1.介绍
Selenium是广泛使用的模拟浏览器运行的库它是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中就像真正的用户在操作一样并且支持大多数现代 Web 浏览器。
2.下载
这里建议用selenium4.1.1版本因为我发现高版本会报错这个版本就没什么问题
下载清华镜像快一点
pip下载打开命令提示符输入下载命令 pip install selenium4.1.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/ 3、安装pywifi
1.介绍
pywifi是在python中一个用于操作无线接口的模块可以跨平台使用Windows和Linux都支持
2.下载
pip下载打开命令提示符输入下载命令 pip3 install pywifi 由于此模块基于comtypes模块因此同时需要下载此模块 pip3 install comtypes 对于PyCharm则直接下载两个模块即可
4、下载浏览器驱动
首先的一点就是查看你的浏览器的版本一定要下载与之对应版本的webdriver驱动文件 Chrome驱动文件下载点击下载chromedrive Firefox驱动文件下载:点解下载geckodriver Edge驱动文件下载点击下载msedgediver
将下载好的压缩包解压到任意位置并把当前路径保存到环境变量。建议将其保存到运行程序的相同级目录下
这样不需要再添加环境变量了 到此前期准备工作就完成了 二、登录校园网
1、打开浏览器
接下来我们开始第一步打开一个网页这里以baidu.com为例在python源程序中输入并运行下列代码 #引入selenium库中的 webdriver 模块from selenium import webdriver#打开Edge浏览器driver webdriver.Edge()#打开百度搜索主页driver.get(https://www.baidu.com)
运行结果如下 如果弹出百度页面那么说明前期工作没毛病恭喜你已经成功一半了
2、在网页中输入信息
以百度搜索主页为例我们在使用时需要在搜索框中输入我们需要搜索的信息那我们怎么捕捉到页面中的搜索框并在其中输入信息呢这时我们需要使用到selenium库中的元素定位方法这里我们希望通过 XPath 定位搜索框在网页中的 input 标签 调用find_element_by_xpath()方法在参数中输入路径表达式来定位搜索框代码如下 #调用selenium库中的find_element_by_xpath()方法定位搜索框同时使用send_keys()方法在其中输入信息driver.find_element_by_xpath(//*[idkw]).send_keys(Hello World!)
运行结果如下 那么大家现在可能会有一个疑问是应该如何获取搜索框的路径表达式呢我们按 F12 或右键打开网页的元素审查窗口点击窗口顶部的元素选择按钮之后选中搜索框此时已定位到搜索框在网页中的 input 标签右键选择Copy XPath即可。详细步骤看图 3、对网页进行点击
在搜索框中输入将要搜索的信息之后需要点击搜索按钮进行搜索搜索按钮的路径表达式获取方式与步骤二一致代码如下 #调用selenium库中的find_element_by_xpath()方法定位搜索按钮同时使用click()方法对按钮进行点击driver.find_element_by_xpath(//*[idsu]).click()
运行结果如下 步骤①至③完整代码如下 # 引入selenium库中的 webdriver 模块from selenium import webdriver# 打开谷歌浏览器driver webdriver.Edge()# 打开百度搜索主页driver.get(https://www.baidu.com)# 调用selenium库中的find_element_by_xpath()方法定位搜索框同时使用send_keys()方法在其中输入信息driver.find_element_by_xpath(//*[idkw]).send_keys(Hello World!)# 调用selenium库中的find_element_by_xpath()方法定位搜索按钮同时使用click()方法对按钮进行点击driver.find_element_by_xpath(//*[idsu]).click()
4、打开并登录校园网
如果你对上述三个基础操作有了足够清楚的认识那么如何实现打开并登录校园网你的心里一定有了一些想法。每个学校的校园网不同但是大同小异下面以我的校园网为例代码如下 # 引入selenium库中的 webdriver 模块from selenium import webdriver# 引入time库import timestu_id XXXXXXXX # 学号passwd XXXXXX # 密码ip_add X.X.X.X # 校园网IP# 这里都是我学校校园网的位置要替换成你自己的stu_id_add //*[idedit_body]/div[3]/div[1]/form/input[2] # 学号的XPathpasswd_add //*[idedit_body]/div[3]/div[1]/form/input[3] # 密码的XPathlogin_add //*[idedit_body]/div[3]/div[1]/form/input[1] # 登录按钮的XPath考虑到网页打开的速度取决于每个人的电脑和网速使用time库的隐式等待隐式等待会在页面加载完成之后才开始。在元素的查找过程中会持续性地获取指定元素对象。如果提前获取到元素则会继续进行后续的操作。如果没有获取到则会等待最大的等待时间也会继续进行后续的操作。设置隐式等待之后每一行代码的操作都会调用隐式等待。# 打开Edge浏览器driver webdriver.Edge()# 隐式等待driver.implicitly_wait(10)# 打开校园网driver.get(fhttp://{ip_add}/)# 输入账号和密码driver.find_element_by_xpath(stu_id_add).send_keys(stu_id)driver.find_element_by_xpath(passwd_add).send_keys(passwd)# 统一网页最大化防止位置不对driver.maximize_window()# 点击登录按钮driver.find_element_by_xpath(login_add).click()# 关闭浏览器driver.close()driver.quit() 三、打开网卡
现在开机自启动不难和连接校园网有ip都可以实现但是我发现刚开机的时候我们的电脑应该是没有IP地址的等待有个DHCP服务器分配给我一个ip如果自己写个DHCP报文发送程序主动寻找请求太麻烦了。
功夫不负有心人终于让我发现一个巧方法
经过多次实验发现在windows桌面图形化界面上只要我打开WLAN然后点击我要连接wife的名字这时候查看无线局域网适配器 WLAN时在命令行查看输入ipconfig发现有ip了。知道了流程那么我们可以用编程来实现这些步骤。
# 引入pywifi库及所带常量库
import pywifi
from pywifi import const, Profile# 获取网卡接口
wifi pywifi.PyWiFi()# 得到第一个无线网卡
ifaces wifi.interfaces()[0]# 切断网卡连接
ifaces.disconnect()# 获取wifi的连接状态
wifistatus ifaces.status()# 检查wifi是否处于切断状态
if wifistatus const.IFACE_DISCONNECTED:# 网卡已被切断pass
# 如果网卡没有被切断
# 或者使用 if wifistatus const.IFACE_CONNECTED:
else:# 已连接wifipass# 如果已经切断网卡一般执行下述操作
if wifistatus const.IFACE_DISCONNECTED:# 设置wifi连接文件profile: Profile pywifi.Profile()# 你要连接的网络的名称profile.ssid # 网卡的开放状态# Auth - AP 的验证算法profile.auth const.AUTH_ALG_OPEN# wifi的加密算法# 通常的加密算法值为 WPA # 选择wifi的加密方式# Akm - AP 的密钥管理profile.akm.append(const.AKM_TYPE_WPA2PSK)# 加密单元# Cipher - AP 的密码类型profile.cipher const.CIPHER_TYPE_CCMP# 设置密码password # 回调密码wifi密码# 如果没有密码则设置值为 CIPHER_TYPE_NONE profile.key password# 删除已连接的所有wifi文件ifaces.remove_all_network_profiles()# 加载新的wifi连接文件tep_profile ifaces.add_network_profile(profile)# 连接上面的wifi文件ifaces.connect(tep_profile)# 如果wifi已连接if ifaces.status() const.IFACE_CONNECTED:print(True)# 如果仍未连接else:print(False) 四、完整程序
# 引入selenium库中的 webdriver 模块
from selenium import webdriver
# 引入time库
import time
# 引入pywifi库及所带常量库
import pywifi
from pywifi import const, Profile# 打开wifi
def open_wlan():# 获取网卡接口wifi pywifi.PyWiFi()# 得到第一个无线网卡ifaces wifi.interfaces()[0]# 获取wifi的连接状态wifistatus ifaces.status()# 如果网络断开执行下述操作if wifistatus const.IFACE_DISCONNECTED:# 设置wifi连接文件profile: Profile pywifi.Profile()# 你要连接的网络的名称profile.ssid XXXXX# 设置密码# password # 如果没有密码则设置值为 CIPHER_TYPE_NONE profile.key CIPHER_TYPE_NONE# 加载新的wifi连接文件tep_profile ifaces.add_network_profile(profile)# 连接上面的wifi文件ifaces.connect(tep_profile)# 连接校园网
def networking():stu_id XXXXXXXX # 学号passwd XXXXXX # 密码ip_add X.X.X.X # 校园网IPstu_id_add //*[idedit_body]/div[3]/div[1]/form/input[2] # 学号的XPathpasswd_add //*[idedit_body]/div[3]/div[1]/form/input[3] # 密码的XPathlogin_add //*[idedit_body]/div[3]/div[1]/form/input[1] # 登录按钮的XPath# 打开Edge浏览器driver webdriver.Edge()# 设置隐式等待driver.implicitly_wait(10)# 打开校园网driver.get(fhttp://{ip_add}/)# 输入账号和密码driver.find_element_by_xpath(stu_id_add).send_keys(stu_id)driver.find_element_by_xpath(passwd_add).send_keys(passwd)# 统一网页最大化防止位置不对driver.maximize_window()# 点击登录按钮driver.find_element_by_xpath(login_add).click()# 关闭浏览器driver.close()driver.quit()if __name__ __main__:open_wlan()networking() 五、设置开机自启动
自启动方法一系统自启动
设置python程序开机自启动
1、创建一个xxx.bat文件将文件扩展名改为bat右键编辑
2、在xxx.bat文件里面写入以下内容后保存可以按照如下流程自己去cmd中测试一下 echo off
#关闭回显功能也就是屏蔽执行过程建议放置在批处理的首行。 d
#如果需要开机自启动的python程序在c盘不需要这一行程序如果需要自启动的python程序在d盘或其他盘需要先切换到d盘或其他盘 cd path
#path为你所要开机自启动的python程序所在的文件夹 python xxx.py
#xxx.py为path文件夹内需要自启动的python程序 例如 echo off
D:
cd D:\study\Python\project\AutomaticLogin\
python test1.py 3、将xxx.bat文件复制到windows的自启动文件夹内即可开机自启动python程序windows自启动文件夹 C:\ProgramData MicrosoftIWindows\Start Menu Programs\StartUp 或者win r 输入shell:startup直接打开自启动文件夹
注意最好在电脑的命令行界面将所需的模块库装一遍否则可能会出现在PyCharm可以运行在命令行运行却报错的情况。 可以在命令行窗口输入pip list可以在windows上查看python安装了哪些库
自启动方法二注册服务
1、打包成exe文件
a.概述
服务的优势就在于可以开机自启动
而在windows上python不能直接将脚本注册为服务需要将其先打包成exe,再将exe注册为服务打包exe
b.安装 PyInstalle
Python 默认并不包含 PyInstaller 模块因此需要自行安装 PyInstaller 模块。
安装 PyInstaller 模块与安装其他 Python 模块一样使用 pip 命令安装即可。在命令行输入如下命令 pip install pyinstaller 这边强烈建议使用 pip 在线安装的方式来安装 PyInstaller 模块不要使用离线包的方式来安装因为 PyInstaller 模块还依赖其他模块pip 在安装 PyInstaller 模块时会先安装它的依赖模块。
运行上面命令应该看到如下输出结果 Successfully installed pyinstaller-x.x.x 其中的 x.x.x 代表 PyInstaller 的版本。installed后面可能会跟上一堆依赖只要里面有pyinstaller就行
在 PyInstaller 模块安装成功之后在 Python 的安装目录下的Scripts目录下会增加一个 pyinstaller.exe 程序接下来就可以使用该工具将 Python 程序生成 exe 程序了。
c.PyInstaller生成可执行程序
安装好pyinstaller包后在cmd/pycharm的终端里运行如下代码打包(进入脚本所在目录) pyinstaller -F test1.py --noconsole -F表示不带依赖exe大工程可能会启动较慢改成-D则表示带依赖小工程直接-F即可 test1.py是我的脚本文件名称这里换成自己的 -noconsole表示不带黑框 注意由于该程序没有图形用户界面因此如果读者试图通过双击来运行该程序则只能看到程序窗口一闪就消失了是正常现象。
2、注册服务
1.下载最新版本
下载地址NSSM - the Non-Sucking Service Manager
2.根据自己的平台将32/64位nssm.exe文件解压至任意文件夹。
3.来到nssm所在目录在文件路径处输入cmd可打开命令窗口 4.在命令窗口内输入 nssm install {服务名称} 即注册服务的名称。 我这里是AutomaticLogin是我注册后的服务的名称这里随意但不可出现中文最好不要有空格、特殊符号 注册服务弹出如下NSSM界面。 5.Application标签设置 Application Path: 选择系统安装的exe(cmd也可以)。
Startup directory: 选择exe项目的根目录。
Arguments: 输入启动参数 点击 Application Path右边的省略号按钮选中前边生成的exe
Startup directory同理选择exe项目的根目录不过一般选好了Application PathStartup directory自动生成 在details下输入服务名和对服务的描述点击Install service 注册成功
打开任务管理器服务 如果状态这里并不是启动状态可以右键启动 如果注册之前就开着服务窗口注册后可能看不到右键刷新一下即可 启动类型为自动即可开机自启动