不得不承认:这篇文章的方法有些小猥琐。
作为一个非专业人士,qq登陆这件事困扰我很长时间。在没有头绪满头乱撞的时候,无意间我发现了一件大杀器:splinter!!!这个python的第三方库会操纵你的浏览器(默认是火狐),打开页面,与网页进行交互。妈妈再也不用担心什么加密什么登陆了!!!
关于splinter的方法,官方网站上简明扼要,学习还是很方便的:splinter的官方网址至于今天的qq登陆,用到的操作就更少了,直接看源代码就可以了。
在写代码之前,只需要打开手机版qq空间登陆页面的源代码,查找一下我们需要操作元素的id就可以了。
`
#coding=utf-8
import time
from splinter import Browser
import re
def login (browser,url,q,p):
browser.visit(url)
#打开url
browser.find_by_id("guideSkip").click()
#找到id是guideSkip的按钮,并单击
time.sleep(1)
browser.find_by_id("u").fill(q)
#找到id是u的输入框,并输入账号
browser.find_by_id("p").fill(p)
#找到id是u的输入框,并输入账号
browser.find_by_id("go").click()
#找到id是go的按钮,并单击
print("完成登陆")
time.sleep(1)
def find(browser):
html=browser.html
#导出当前页面的源代码
print html
content=re.findall('<p>(.*?)</p>',html,re.S)
for each in content:
print each
if __name__=='__main__':
url='http://ui.ptlogin2.qzone.com/cgi-bin/login?style=9&appid=549000929&daid=147&pt_no_auth=1&s_url=http%3A%2F%2Fm.qzone.com%2Finfocenter%3Fg_f%3D'
qq='账号'
possword='密码'
browser=Browser()
login(browser,url,qq,possword)
find(browser)`
运行程序,就会看到你的浏览器自动打开,然后进入网址,输入账号密码,一气呵成。
但是我们会发现两个小问题:一个是qq空间的网页即使是手机版的也用到了动态加载(根据你浏览的位置,后期内容选择性加载),这些内容没有在源代码里。二是登陆的速度稍微有些慢。关于这些,我们后面会讨论。