当前位置:博客首页>>Python >> 阅读正文

使用Python+Selenium模拟登录QQ空间

作者: 郑晓 分类: Python 发布于: 2016-06-13 19:30 浏览:23,679 评论(23)


使用Python+Selenium模拟登录QQ空间
爬QQ空间之类的页面时大多需要进行登录,研究QQ登录规则的话,得分析大量Javascript的加密解密,这绝对能掉好几斤头发。而现在有了selenium工具,麻麻再也不用担心你的QQ登录!

Selenium是一个WEB自动化测试工具,它运行时会直接实例化出一个浏览器,完全模拟用户的操作,比如点击链接、输入表单,点击按钮提交等。所以我们使用它可以很方便的来登录QQ空间。

#导入selenium2中的webdriver库
from selenium import webdriver

#实例化出一个Firefox浏览器
driver = webdriver.Firefox()

#设置浏览器窗口的位置和大小
driver.set_window_position(20, 40)
driver.set_window_size(1100,700)

#打开一个页面(QQ空间登录页)
driver.get(‘http://qzone.qq.com’)
#登录表单在页面的框架中,所以要切换到该框架
driver.switch_to_frame(‘login_frame’)
#通过使用选择器选择到表单元素进行模拟输入和点击按钮提交
driver.find_element_by_id(‘switcher_plogin’).click()
driver.find_element_by_id(‘u’).clear()
driver.find_element_by_id(‘u’).send_keys(‘917464311’)
driver.find_element_by_id(‘p’).clear()
driver.find_element_by_id(‘p’).send_keys(‘123456’)
driver.find_element_by_id(‘login_button’).click()

#do something….
#退出窗口
driver.quit()

这样就能方便的登录到QQ空间,下一步就可以利用这个登录状态去抓取页面内容或其它脑洞大开的应用了~~~
安装selenium库,建议直接使用pip工具

#pip install selenium


2017-02-28 更新:
有网友反映登录时出现异常,我只能表示无能为力,我只是用过selenium,并不能解决各种疑难杂症,今天又收到回复说是无法使用,我以为是腾讯改什么规则了,所以又测试了一下没发现问题,并录制了gif,如下图(点击查看高清…):

环境:64位Win10 + chromedriver(2.27) + python2.7 + 密码在运行时已经修改了:)

       

本文采用知识共享署名-非商业性使用 3.0 中国大陆许可协议进行许可,转载时请注明出处及相应链接。

本文永久链接: https://www.zh30.com/python-selenium-qzone-login.html

使用Python+Selenium模拟登录QQ空间:目前有23 条留言

用户评论头像 十分感谢发表于 2017年08月22日 23:50[回复]

请问如果使用python3的话,有什么需要修改的地方吗?

    用户评论头像 郑晓发表于 2017年08月23日 09:13[回复]

    基本不需要改,只是一些小地方,比如print函数、比如可以不进行编码转换,这个得你自己试。

用户评论头像 zh30发表于 2017年08月12日 08:51[回复]

大神你好,请问能扩展下写个Python下载QQ相册的教程吗? 冰天雪地360度跪求!!!

用户评论头像 kazz发表于 2017年07月10日 16:05[回复]

请问一下那个密码写的是****在运行时是修改为正确密码,这个怎么弄得?

    用户评论头像 郑晓发表于 2017年07月11日 10:37[回复]

    哈哈,其实保存的是正确的明文密码,只是我打开编辑开始录屏时把密码修改了。

      用户评论头像 kazz发表于 2017年07月21日 09:26[回复]

      好吧,还以为能用Python实现暗文密码登录呢

用户评论头像 忠诚的锅贴发表于 2017年02月11日 11:03[回复]

您好,我用这一段代码测试,然后再点击登录按钮后,qq空间会显示网络正忙,但是我自己在浏览器上面点击登录键却可以登录进去,这是怎么样的情况呢?

    用户评论头像 郑晓发表于 2017年02月11日 16:06[回复]

    这我还真不清楚呢,程序运行时有报什么错么?

      用户评论头像 Crazy-Fred发表于 2017年02月28日 13:49[回复]

      您好!我也运行了这一段代码,打开了网页,但是显示网络繁忙,请稍后再试。我直接点击登录就可以进去QQ空间。程序运行没有报错,想请教一下是什么问题

        用户评论头像 郑晓发表于 2017年02月28日 14:30[回复]

        这个我真解决不了,我只是用过selenium,但并不能解决各种疑难杂症,我刚测试过了没有问题。请看文章下方的更新。

用户评论头像 心累发表于 2017年01月09日 18:22[回复]

我报NoneType object is not callable这个错误怎么办

    用户评论头像 心累发表于 2017年01月09日 18:31[回复]

    好了;谢谢博主

用户评论头像 lin发表于 2016年11月02日 17:35[回复]

我登录后获取driver.get_cookies()就报这个错can’t access dead object。您知道是什么原因吗

    用户评论头像 郑晓发表于 2016年11月02日 20:03[回复]

    我没遇到过这个问题,你看打开的浏览器是否有多选项卡?

用户评论头像 打铁像渣科发表于 2016年09月29日 15:04[回复]

如何利用这个登录状态去抓取页面内容?

    用户评论头像 郑晓发表于 2016年09月29日 15:07[回复]

    保存cookie,可以参考我的另一篇文章《python+selenium实现QQ群自动签到》

用户评论头像 奔跑中的笨蛋发表于 2016年08月22日 11:10[回复]

看不懂看不懂!!暂时没有学习这个

用户评论头像 认真的油茶发表于 2016年07月23日 23:23[回复]

有用。。。。刚刚需要。。。

用户评论头像 非常感谢发表于 2016年06月21日 23:39[回复]

非常感谢您,刚研究这个玩意,很多不懂的,觉得点击位置是正确的就是总是出错,还以为是浏览器问题,弄了很久,然后才发现没有切换到框架里面

发表评论

change vcode