python爬虫6——模拟登陆人人网

用python怎么自动登录一个网站呢?之前我也有过这样的疑问,老自己去填,多麻烦啊,接下来这篇文章将讲解怎么用python2模拟登陆人人网。

一、用fiddler查看登录信息

模拟登陆第一步,用fiddler查看发出访问信息的请求:

网页:

输入多次后,会要求输入验证码:

密码我这里输入的是123,找到这个访问请求:

二、检索相关元素

ok,找到了它的请求参数,下一步,我们检索每一个参数对应的标题,采用谷歌浏览器查看,如用户名部分:

<input type="text" name="email" class="input-text" id="email" tabindex="1" value="" style="color: rgb(51, 51, 51);">

实际上有三个值是由必要传的,如email、password和icode(验证码)

 

三、撸代码

1,构建session请求

# 构建一个Session对象,可以保存页面Cookie

sess = requests.Session()

# 请求报头

headers = {"User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}

# 首先获取登录页面,找到需要POST的数据(_xsrf),同时会记录当前网页的Cookie值

html = sess.get("http://www.renren.com/", headers = headers).text

2,解析出验证码地址

核心代码:bs.select("#verifyPic_login")[0].attrs.get(u'src')

bs = BeautifulSoup(html, 'html.parser')

# 这是验证码

icode = bs.select("#icode")

captcha_url = bs.select("#verifyPic_login")[0].attrs.get(u'src')

print "captcha_url",captcha_url

captcha_data = sess.get(captcha_url, headers=headers).content

3,根据url下载验证码,并手工输入文字

def captcha(captcha_data):

with open("icode.jpg", "wb") as f:

f.write(captcha_data)

text = raw_input("请输入验证码:")

# 返回用户输入的验证码

return text

4,构建data、发送请求

查看下下来的图片:

返回的text可以用作构建data:

data = {

"email":"",

"password":"",

"icode":text

}

email和password填自己的就可以了

# 发送登录需要的POST数据,获取登录后的Cookie(保存在sess里)

response = sess.post("http://www.renren.com/ajaxLogin/login", data=data, headers=headers)

print response.text

之后再已同一个session发起请求就可以了!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值