想要实现网站的登陆,post方法就是提交数据到网站,所以要post数据来用python实现登陆。当你想要登陆人人时,首先要知道网站的登陆细节(先发送账号和密码,返回cookie值,发送cookie到服务器,返回页面,再使用正则提取你想要的数据),我是通过HTTPfox来抓取http数据包来分析这个网站的登陆流程。同时,我们还要分析抓到的post包的数据结构和header,要根据提交的数据结构和heander来构造自己的post数据和header。
分析结束后,我们要构造自己的HTTP数据包,并发送给指定url。我们通过urllib2等几个模块提供的API来实现request请求的发送和相应的接收。大部分网站登录时需要携带cookie,所以我们还必须设置cookie处理器来保证cookie。具体httpfox的使用可以通过定制来将其加入到工具栏,之后它出现在右上角直接点击就可以了,或者使用快捷键Ctrl+Shift+F2。
实现登陆人人还是比较简单的,淘宝就有了一点难度,因为淘宝有验证码和它自己的post格式,明天再写淘宝的登陆,跪求大牛带走啊。
#-*- coding:utf-8 -*- import sys import re import urllib2 import urllib import requests import cookielib loginurl = 'http://www.renren.com/PLogin.do' logindomain = 'renren.com' """ 当我们使用urllib处理url的时候,实际上是通过urllib2.OpenerDirector实例进 行工作,他会自己调用资源进行各种操作如通过协议、打开url、处理cookie等。而urlopen 方法使用的是默认的opener来处理问题,基本的urlopen()函数不支持验证、cookie或其他 的HTTP高级功能。要支持这些功能,必须使用build_opener()函数来创建自己的自定义Opener对象。 """ class Login(object): def __init__(self): self.name = '' self.passwprd = '' self.domain = '' #更改默认的opener,因为默认的opener没有处理cookie的功能。 self.cj = cookielib.LWPCookieJar() self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cj)) urllib2.install_opener(self.opener) def setLoginInfo(self,username,password,domain): '''''设置用户登录信息''' self.name = username self.pwd = password self.domain = domain def login(self): '''''登录网站''' loginparams = {'domain':self.domain,'email':self.name, 'password':self.pwd} headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1'} req = urllib2.Request(loginurl, urllib.urlencode(loginparams),headers=headers) response = urllib2.urlopen(req) self.operate = self.opener.open(req) thePage = response.read() print thePage if __name__ == '__main__': print loginurl #测试 userlogin = Login() #username = '账号' #password = '密码' #可以自己指定,也可以实时输入。 username = raw_input("Please input your username in renren: ") password = raw_input("Please input your password of renren: ") domain = logindomain userlogin.setLoginInfo(username,password,domain) userlogin.login() print loginurl #测试
原文:http://blog.csdn.net/djd1234567/article/details/45271601