Python模拟登录QQ邮箱和QQ空间(selenium)
1、准备工作
- python3,pycharm
- 安装selenium (windows电脑安装:pip install selenium )
- 浏览器驱动安装:http://npm.taobao.org/mirrors/chromedriver/(这里使用的是Chrome浏览器,根据版本号下载对应的版本,在设置->关于Chrome里查看),解压后把chromedriver.exe放在文件夹C:\用户\用户名\AppData\Local\Programs\Python\Python37\内。

2、过程分析
1、QQ邮箱
- QQ邮箱账号密码登录页:邮箱登录界面
- 在页面上点击右键->检查,为了实现自动登录,需要在网页源代码里找到账号密码输入框和登录按钮对应的标签位置。

- 在编写代码时建议使用class和id定位元素的位置,因为这两个值是唯一的。
find_elements_by_class_name #通过元素的class属性选择
find_elements_by_id #通过元素的id选择
find_elements_by_tag_name #通过元素的标签选择
find_elements_by_name #通过元素的name属性选择
find_elements_by_link_text #通过链接文本获取链接
find_elements_by_partial_link_text #通过部分链接文本获取链接
- 输入和点击,可以使用如下指令:
send_keys() # 模拟输入
click() # 模拟点击
2、QQ空间
- 登录页:https://qzone.qq.com/
- 与上面提供的QQ邮箱登录页不同的是,提供的QQ空间登录页模拟登录时需要切换到iframe模式
(在模拟登录时可能遇到定位不到元素的问题,这时候就需要考虑到iframe的问题,读者可以进入QQ邮箱的这个登录页https://mail.qq.com/进行切换iframe模拟登录练习)

- 使用指令driver.switch_to.frame('login_frame')切换到登录面后,接下来的操作与上述模拟登录QQ邮箱相同。
3、代码实现
1、邮箱登录
#模块导入
import time
from selenium import webdriver #从selenium库中调用webdriver模块
account = input('请输入登录账号\t')
password = input('请输入登录密码\t')
driver = webdriver.Chrome() #打开一个chrome浏览器
driver.get('https://xui.ptlogin2.qq.com/cgi-bin/xlogin?target=self&appid=522005705&daid=4&s_url=https://mail.qq.com/cgi-bin/readtemplate?check=false%26t=loginpage_new_jump%26vt=passport%26vm=wpt%26ft=loginpage%26target=&style=25&low_login=1&proxy_url=https://mail.qq.com/proxy.html&need_qr=0&hide_border=1&border_radius=0&self_regurl=http://zc.qq.com/chs/index.html?type=1&app_id=11005?t=regist&pt_feedback_link=http://support.qq.com/discuss/350_1.shtml&css=https://res.mail.qq.com/zh_CN/htmledition/style/ptlogin_input_for_xmail51328e.css') # 访问页面
time.sleep(2) #等待2秒,等候浏览器加载数据
login = driver.find_element_by_id('switcher_plogin') #账号密码登录点击位置
login.click()
time.sleep(2)
username = driver.find_element_by_id('u') #账号输入框
username.send_keys(account) #输入账号
pwd = driver.find_element_by_id('p') #密码输入位置
pwd.send_keys(password) #输入密码
button = driver.find_element_by_id('login_button') #登录按钮点击位置
button.click() #模拟点击
time.sleep(10) #等候几秒,看看效果
driver.close() #关闭浏览器
2、空间登录
import time
from selenium import webdriver #从selenium库中调用webdriver模块
account = input('请输入登录账号\t')
password = input('请输入登录密码\t')
driver = webdriver.Chrome() #打开一个浏览器
driver.get('https://i.qq.com/') # 访问页面
time.sleep(2) #等待加载数据
driver.switch_to.frame('login_frame') #切换到iframe
login = driver.find_element_by_id('switcher_plogin') #账号密码登录位置
login.click() #模拟点击
username = driver.find_element_by_id('u') #账号输入框
username.send_keys(account) #模拟输入
pwd = driver.find_element_by_id('p') #密码输入框
pwd.send_keys(password) #模拟点击
button = driver.find_element_by_id('login_button') #登录按钮位置
button.click() #模拟点击
time.sleep(10) #等候几秒,看看效果
driver.close() #关闭浏览器
'''
#给第一条说说点赞
time.sleep(2)
like = driver.find_element_by_css_selector('a.item.qz_like_btn_v3')
like.click()
'''
4、总结
- 本文只介绍了selenium的一些简单操作,selenium的更多操作可以去https://selenium-python-zh.readthedocs.io/en/latest/进一步学习。
- 百度云盘:https://pan.baidu.com/s/18BFHiUWKyLDlhFQvVqxpCg,提取码:954e
1143

被折叠的 条评论
为什么被折叠?



