这里用谷歌浏览器为例,登录qq空间 条件:python环境,谷歌驱动chromedriver.exe,安装selenium模块步骤
1、安装selenium模块 2、安装谷歌驱动chromedriver.exe 3、导入相关库 4、实例化浏览器对象 5、发起一个指定url对应请求 6、定位到账号密码登录操作标签 7、输入你的账号和密码 8、点击登录 9、进行滑块验证 10、关闭浏览器1、安装selenium模块
pip install selenium2、安装谷歌驱动chromedriver.exe
下载和chrome浏览器版本相对应的chromedriver.exe版本
我的chrome版本是99.0.4844.82,这里没有对应的驱动,下载相近的即可,这里我就下载99.0.4844.51
点击打开之后,看到如图所示信息,我的电脑是Windows系统,下载chromedriver_win32.zip,32位和64位的Windows系统都下载该压缩包
把解压后的chromedriver.exe粘贴放在python环境的目录下
3、导入相关库
# 导入相关库 from selenium import webdriver from time import sleep from selenium.webdriver import ActionChains #selenium的动作方法4、实例化浏览器对象
bro=webdriver.Chrome()5、发起一个指定url对应请求
bro.get('https://qzone.qq.com/')
6、定位到账号密码登录操作标签(定位都采用id进行标签定位)
如果定位的相关登录操作标签在iframe标签中,必须使用switch_to.frame('login_frame'),因为iframe是一个内联框架,就相当于一栋房子里的房间,必须打开房间的门才能看到里面的东西。
因为要自动登录,所以采用账号密码登录。点击左上方小箭头,选中‘账号密码登录’找到该动作的标签,定位到该标签find_element_by_id('switcher_plogin'),点击操作click()
# 如果定位的相关登录操作标签在iframe标签中,必须使用下面操作,login_frame是iframe标签的id属性值
bro.switch_to.frame('login_frame')
# 再定位到要操作的位置标签
a_tag=bro.find_element_by_id('switcher_plogin')
a_tag.click() #点击
7、输入你的账号和密码
点击账号密码登录操作之后,开始输入账号密码,点击左上方小箭头,选中‘账号’找到该动作的标签,账号和密码一样,定位到相应的输入框(用户名和密码)find_element_by_id('u')和find_element_by_id('p')
# 定位到相应的输入框(用户名和密码)
username_tag=bro.find_element_by_id('u') #账号
password_tag=bro.find_element_by_id('p') #密码
输入账号和密码send_keys('账号'),send_keys('密码'),将自己的账号密码写入其中
# 输入账号,将账号放入send_key()中
username_tag.send_keys('1234567890')
# 输入密码,将密码放入send_key()中
password_tag.send_keys('123456')
8、点击登录
点击’授权登录‘,定位到该标签find_element_by_id('login_button'),点击
# 定位到登录按钮
btn=bro.find_element_by_id('login_button')
btn.click() #点击
9、进行滑块验证
刚开始可能不用进行滑块验证,反复登录之后就需要了。这里就不采用cv2模块的方法进行滑块验证,比较难,直接用动作链ActionChains进行验证,因为通过观察每个滑块验证的滑动距离差不多,也不需要小滑块和背景图严丝合缝,直接拖动固定距离就基本可以验证成功。
通过观察源码该滑块验证又是在一个iframe内联框架中,所以又要使用switch_to.frame('tcaptcha_iframe')
定位到该滑块按钮,点击并长按,向右拖动一段距离,然后再松开鼠标左键
# 安全验证拖动滑块
# 实例化一个动作链对象
action=ActionChains(bro)
bro.switch_to.frame('tcaptcha_iframe')
# 定位到滑块
div=bro.find_element_by_id('tcaptcha_drag_thumb')
# click_and_hold()点击并长按
action.click_and_hold(div)
# move_by_offset(x,y) 移动,x:水平方向,y:竖直方向
action.move_by_offset(180,0)
sleep(1)
# 释放动作链接对象release(on_element=None),perform()执行链中的所有动作
action.release(div).perform()
10、关闭浏览器
# 关闭浏览器 bro.quit()代码示例
# 导入相关库
from selenium import webdriver
from time import sleep
from selenium.webdriver import ActionChains #selenium的动作方法
# 实例化浏览器对象,这里用的是谷歌浏览器,将下载的chromediver.exe放到python3.x环境的目录下
# 下载和谷歌版本对应的chromedirver.exe版本
bro=webdriver.Chrome()
# 让浏览器发起一个指定url对应请求
bro.get('https://qzone.qq.com/')
# 如果定位的相关登录操作标签在iframe标签中,必须使用下面操作,login_frame是iframe标签的id属性值
bro.switch_to.frame('login_frame')
# 再定位到要操作的位置标签
a_tag=bro.find_element_by_id('switcher_plogin')
a_tag.click() #点击
# 定位到相应的输入框(账号和密码)
username_tag=bro.find_element_by_id('u')
password_tag=bro.find_element_by_id('p')
sleep(1)
# send_keys()里面输入你的账号和密码
username_tag.send_keys('1234567890')
sleep(1)
password_tag.send_keys('123456')
sleep(1)
# 定位到登录按钮
btn=bro.find_element_by_id('login_button')
btn.click() #点击
sleep(1)
# 安全验证拖动滑块
# 实例化一个动作链对象
action=ActionChains(bro)
bro.switch_to.frame('tcaptcha_iframe')
# 定位到滑块
div=bro.find_element_by_id('tcaptcha_drag_thumb')
# click_and_hold()点击并长按
action.click_and_hold(div)
# move_by_offset(x,y) 移动,x:水平方向,y:竖直方向
action.move_by_offset(180,0)
sleep(1)
# 释放动作链接对象release(on_element=None),perform()执行链中的所有动作
action.release(div).perform()
# 关闭浏览器
sleep(5)
bro.quit()
到这里你就可以用代码自动登录QQ空间


