对比urllib、urllib2与requests不难发现,前者功能更强大,但是实现一个功能要写很多的代码,后者,requests代码简洁,用起来更快速
下面一个模拟登录的代码:看看吧一共也没有几行就实现了。
#-*- coding:utf-8 -*- from requests import Request,Session import json s =Session() codeurl = 'https://secure.elong.com/passport/getValidateCode' loginurl='https://secure.elong.com/passport/ajax/elongLogin' code = s.get(codeurl)//这句不加会提示验证码错误 #print code.content postData = {'userName':'13718651668', 'passwd':'yhlexx8701xx', 'validateCode':'1234', 'rememberMe':'false'} reponse = s.post(loginurl,data=postData) print reponse.text
#如果需要取结果中的值做登录后的后续操作,可以使用json方式,很方便
esid = json.loads(reponse.text)["esid"]
print esid
c ='http://my.elong.net/Connection_en.html?SessionTag='+esid+'nextUrl=http%3A%2F%2Fmy.elong.com%2FCashCoupon_cn.html&expireTime=0'
r = s.get(c)
print r.content
登录是成功的,但是从返回的结果中可以看出,本次登录不需要验证码输入。
有一些网站,只要不输入密码错误,是不是需要输入验证码的。
猜测这个是在session中做的记录,这里呢每次执行重新创建session,即使密码错误也不会提示输入验证码。竞然把验证码避过了。
我也不是很明白,有懂的同学,给回复下。学习一下,谢谢!