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

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

作者: 郑晓 分类: Python 发布于: 2016-06-13 19:30 浏览:23,682 评论(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 条留言

用户评论头像 coder发表于 2018年01月24日 18:51[回复]

你好,使用你的代码,能够打开chrome浏览器并进入登录界面,但是代码在执行到driver.switch_to.frame(‘login_frame’) 时报错
data = self._sock.recv(self._rbufsize)
socket.error: [Errno 10054]
不知道是什么原因
环境python 2.7

    用户评论头像 郑晓发表于 2018年01月24日 18:58[回复]

    这个我也不清楚

用户评论头像 枫丶落叶发表于 2017年09月05日 21:27[回复]

python3.6.2 按照你这个写出来会有错误消息“Message: ‘Application’ executable may have wrong permissions. Please see https://sites.google.com/a/chromium.org/chromedriver/home”
我创建的是谷歌浏览器,本机没有安装火狐,错误大概是说需要打开谷歌浏览器的路径 但是不知道怎么解决,还有switch_to_frame这个函数在我这里是不建议使用的,烦请问下现在这个库这个函数改成什么名字啦。?谢谢!

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

    错误消息字面上是说可能chromedriver没有权限执行吧,不清楚你是在什么系统中运行的,你可以检查一下权限看看。至于switch_to_frame这个有什么替代的,我在stackoverflow你给找到了,原话是”driver.switch_to_frame() is deprecated now, please use driver.switch_to.frame()”。

发表评论

change vcode