赞
踩
基于上面的问题,我周末写了一个使用Python+pyautogui实现B站的自动登录过程。主要涉及:返回桌面、坐标获取、启动浏览器、网址输入、点击登录按钮、输入账号密码、进行登录。
1)坐标定位工具,我这里使用的是:Inspect这个工具(安装方法可以参考官方文档:https://learn.microsoft.com/zh-cn/windows/win32/winauto/inspect-objects)。
当然,你也可以从网上搜索绿色免安装版本使用。
上面的工具安装好了之后,我们就开始实战工作了,
步骤1:启动浏览器
先获取浏览器的坐标–>双击浏览器图标启动浏览器。我这里浏览器的坐标是(14,214),那么对应的Python代码应该这样:
import pyautogui
# 打开浏览器,启动应用,我们是需要双击哦
pyautogui.doubleClick(14, 214)
具体的操作顺序如下:点击浏览器地址栏–>输入B站地址–>按下回车键–>双击浏览器标题栏,将浏览器最大化。
在上面步骤一中双击浏览器图标运行浏览器后,我们需要先等待浏览器启动完成,在实际工作中,由于机器的性能不一样,这里的等待时间最好设置长一些,以确保浏览器已经启动完成。(当然了,大家如果想做的更完善保险一些,可以使用图像对比的方式。除了图片识别比对的方式,还可以通过获取任务管理器中的进程信息来确定应用是否已经启动,时间关系,这里就不再展开了。如果大家想要知道怎么在本次实战中使用,我到时候根据文章的热度和需求看是否有必要写一篇关于判断应用是否已经启动的文章)。浏览器启动后,我们需要做的就是在浏览器的地址栏中输入B站的地址了。
先获取浏览器地址栏坐标(629,51)
接下来是输入B站地址和按下回车键。打开B站的过程代码如下:
# 这里我使用的是点击浏览器地址栏,如果浏览器默认带有URL地址的话,点击操作把浏览器的默认地址选中,然后直接输入B站的URL地址。
# (这里提醒一下大家,一定要注意原有URL地址的清空操作哦。)
pyautogui.doubleClick(629, 15)
pyautogui.typewrite('https://www.bilibili.com/', interval=1)
# 输入地址后,按下回车键
pyautogui.press('enter')
# 等待页面加载完成
time.sleep(10)
# 双击浏览器的标题栏,实现将浏览器最大化
pyautogui.doubleClick(780, 25)
time.sleep(1)
要实现这一步,我们需要先点击登录按钮–>在弹出的登录弹框中输入用户名、密码–>点击弹框中的登录按钮(根据B站的安全机制,点击登录按钮后可能会出现验证码,大家看是手动点击还是使用验证码识别接口解决。这里就不扩展了)。
在点击登录按钮弹出登录弹框的这里,有个需要注意的地方,就是检查工具它无法获取到到登录图标的控件元素,只能获取到B站首页的整个大框架控件。此时不再是使用中心坐标的这个数值来作为我们操作的坐标了。应该取鼠标鼠标坐在位置的坐标来进行点击操作。当前我鼠标放在登录按钮后的坐标为(1252,160)。具体看如下截图描述。
登录弹框中,账号密码输入框控件的中心坐标可以成功识别,我们直接去中心坐标好了,我这里的坐标是(1134,457):
密码输入框的控件也是可以识别的,我这里的中心坐标是(1072,513)
登录弹框中的登录按钮控件也是可以识别到的,可以直接去中心坐标(1232,590)
好了,有了登录过程需要的操作坐标信息,接下来就可以编写代码了。
# 点击顶部操作栏的登录功能菜单 pyautogui.click(1252, 160) # 休眠1秒,等待登录弹框显示完整(虽然说这个弹框肯定花不到1秒的时间,但我们在写自动化操作脚本时要稳妥一些,宁愿多等待一会,程序会更加健壮) time.sleep(1) """ 注意了:来自【Python学习与大数据分析】的提醒: 点击账号输入框,大家注意了,我这里使用的是双击操作, 因为我们不能确定输入框中是否保留有上次操作留下的用户名, 如果有用户名的话,双击操作可以选中上次的用户名, 这样在下一个步骤做输入的时候,会直接替换掉上一步遗留的用户名, 如果没有遗留用户名的话,双击操作也不会有什么负面影响。 """ pyautogui.doubleClick(1134,457) # 做每个动作前,最好休眠一会,不然操作太快的话有些操作可能没有反应。 time.sleep(1) # 输入账号,这里请大家替换成自己的账号哦,这里的interval参数是控制输入速度,单位是秒,这里我设置为0.1秒,也就是说输入速度是0.1秒一个字符。 pyautogui.typewrite('test123456', interval=0.1) time.sleep(1) # 点击密码输入框 pyautogui.click(1072,513) time.sleep(1) # 输入密码 pyautogui.typewrite('123456', interval=0.1) time.sleep(1) # 点击登录弹框上的登录按钮 pyautogui.click(1232,590) # 根据B站的安全机制,点击登录按钮后可能会出现验证码,大家看是手动点击还是使用验证码识别接口解决。这里就不扩展了 # 等待10秒钟,等待登录请求完成。 time.sleep(10)
# TODO
这里大家可以补充完善,点击登录按钮后,对登录是否成功做一个判断。
方法一:使用pyautogui的图像查找方法,查看页面上是否有你的头像图片。这篇文章中有提到怎么做图片比对《Python实现按键精灵?掌握这个自动化库,上班可以摸鱼了》
方法二:使用web自动化测试库selenium的find_element_by_xpath方法,查找页面上是否有你的头像图片。
当然了,肯定不止上面的两种方法,还有其他方法有实现。但既然我们这里使用的是pyautogui,那就先用pyautogui的图像查找方法吧。
最后,跟大家强调个需要注意的地方:如果大家是使用pycharm来运行脚本,需要注意的是,在代码的第一步之前,需要增加将界面切换到桌面的动作。有两种方式可以实现:
方式一:使用pyautogui发送《“win”+“d”》快捷键的方式返回桌面。
方式二:点击任务栏最右侧的空白区域坐标来返回桌面。我这里放一下第二种方式的代码。
# 运行脚本后,我们需要先点击屏幕最右下角的小区域返回桌面到桌面,在桌面才有浏览器的图标
time.sleep(5)
pyautogui.click(1917, 1055)
time.sleep(5)
通过上面,我们一步步的操作,我们已经完成了:运行脚本后,返回桌面,双击桌面的浏览器图标,点击浏览器地址栏,在地址栏输入B站地址,按下回车键打开B站首页,点击首页顶部的登录图标区域弹出登录弹框,输入账号和密码,点击弹框中的登录按钮。这整个操作下来,就是使用pyautogui实现B站自动化登录的过程。下面我发下完整的代码。
''' describe:使用pyautogui实现B站的自动化登录 date:2023/11/19 by:Python学习与大数据分析 ''' import pyautogui import time # 运行脚本后,我们需要先点击屏幕最右下角的小区域返回桌面到桌面,在桌面才有浏览器的图标 time.sleep(5) pyautogui.click(1917, 1055) time.sleep(5) # 打开浏览器,启动应用,我们是需要双击哦 pyautogui.doubleClick(14, 214) # 等待浏览器启动完成 time.sleep(10) # 双击浏览器的标题栏,实现将浏览器最大化 pyautogui.doubleClick(780, 25) time.sleep(1) # 这里我使用的是点击浏览器地址栏,如果浏览器默认带有URL地址的话,点击操作把浏览器的默认地址选中,然后直接输入B站的URL地址。 # (这里提醒一下大家,一定要注意原有URL地址的清空操作哦。) pyautogui.doubleClick(100, 100) pyautogui.typewrite('https://www.bilibili.com/', interval=0.1) # 输入地址后,按下回车键 pyautogui.press('enter') # 等待页面加载完成 time.sleep(10) # 点击顶部操作栏的登录功能菜单 pyautogui.click(1252, 160) # 休眠1秒,等待登录弹框显示完整(虽然说这个弹框肯定花不到1秒的时间,但我们在写自动化操作脚本时要稳妥一些,宁愿多等待一会,程序会更加健壮) time.sleep(1) """ 注意了:来自【Python学习与大数据分析】的提醒: 点击账号输入框,大家注意了,我这里使用的是双击操作, 因为我们不能确定输入框中是否保留有上次操作留下的用户名, 如果有用户名的话,双击操作可以选中上次的用户名, 这样在下一个步骤做输入的时候,会直接替换掉上一步遗留的用户名, 如果没有遗留用户名的话,双击操作也不会有什么负面影响。 """ pyautogui.doubleClick(1134,457) # 做每个动作前,最好休眠一会,不然操作太快的话有些操作可能没有反应。 time.sleep(1) # 输入账号,这里请大家替换成自己的账号哦,这里的interval参数是控制输入速度,单位是秒,这里我设置为0.1秒,也就是说输入速度是0.1秒一个字符。 pyautogui.typewrite('test123456', interval=0.1) time.sleep(1) # 点击密码输入框 pyautogui.click(1072,513) time.sleep(1) # 输入密码 pyautogui.typewrite('123456', interval=0.1) time.sleep(1) # 点击登录弹框上的登录按钮 pyautogui.click(1232,590) # 根据B站的安全机制,点击登录按钮后可能会出现验证码,大家看是手动点击还是使用验证码识别接口解决。这里就不扩展了 # 等待10秒钟,等待登录请求完成。 time.sleep(10) # TODO 这里大家可以补充完善,点击登录按钮后,对登录是否成功做一个判断。 # 方法一:使用pyautogui的图像查找方法,查看页面上是否有你的头像图片。 # 方法二:使用web自动化测试库selenium的find_element_by_xpath方法,查找页面上是否有你的头像图片。 # 当然了,肯定不止上面的两种方法,还有其他方法有实现。但既然我们这里使用的是pyautogui,那就先用pyautogui的图像查找方法吧。
最后的最后,我想强调下,可能会有同学直接把我的代码拷贝过去直接就运行,然后发现效果不正确会感到疑惑。我这里说明下,我的电脑分辨率是1920*1080的,且有放大设置。不同的屏幕分辨率、缩放设置会引起坐标不一致。所以大家拷贝上述代码后不要直接就运行了,需要使用inspect工具定位下自己电脑桌面浏览器的图标的坐标值、B站各个元素的坐标值,修改正确后再运行程序。
感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
工具都帮大家整理好了,安装就可直接上手!
三、最新Python学习笔记
当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。
四、Python视频合集
观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
五、实战案例
纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
六、面试宝典
简历模板
若有侵权,请联系删除
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。