python requests登录_【Python数据分析】Python模拟登录(一) requests.Session应用

本文介绍了如何使用Python的requests和BeautifulSoup库模拟登录V2EX网站。首先,通过Session对象处理cookies,然后抓取登录页面的once值,构建POST数据并提交登录信息,最后访问个人设置页面验证登录成功。通过这个过程,学习了模拟登录的基本步骤。
摘要由CSDN通过智能技术生成

最近由于某些原因,需要用到Python模拟登录网站,但是以前对这块并不了解,而且目标网站的登录方法较为复杂, 所以一下卡在这里了,于是我决定从简单的模拟开始,逐渐深入地研究下这块。

注:本文仅为交流学习所用。

登录特点:明文传输,有特殊标志数据

会话对象requests.Session能够跨请求地保持某些参数,比如cookies,即在同一个Session实例发出的所有请求都保持同一个cookies,而requests模块每次会自动处理cookies,这样就很方便地处理登录时的cookies问题。在cookies的处理上会话对象一句话可以顶过好几句urllib模块下的操作。即相当于urllib中的:

cj = http.cookiejar.CookieJar()

pro = urllib.request.HTTPCookieProcessor(cj)

opener = urllib.request.build_opener(pro)

urllib.request.install_opener(opener)

模拟登录V站

本篇文章的任务是利用request.Session模拟登录V2EX(http://www.v2ex.com/)这个网站,即V站。

工具: Python 3.5,BeautifulSoup模块,requests模块,Chrome

这个网站登录的时候抓到的数据如下:

591194-20160325185213776-2034069758.png

其中用户名(u)、密码(p)都是明文传输的,很方便。once的话从分析登录URL: http://www.v2ex.com/signin 的源文件(下图)可以看出,应该是每次登录的特有数据,我们需要提前把它抓出来再放到Form Data里面POST给网站。

591194-20160325185557151-1184474741.png

抓出来还是老方法,用BeautifulSoup神器即可。这里又学到一种抓标签里面元素的方法,比如抓上面的"value",用soup.find('input',{'name':'once'})['value']即可

即抓取含有 name="once"的input标签中的value对应的值。

于是构建postData,然后POST。

怎么显示登录成功呢?这里通过访问 http://www.v2ex.com/settings 即可,因为这个网址没有登录是看不了的:

591194-20160325190853979-1969029857.png

经过上面的分析,写出源代码(参考了alexkh的代码):

import requests

from bs4 import BeautifulSoup

url = "http://www.v2ex.com/signin"

UA = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.13 Safari/537.36"

header = { "User-Agent" : UA,

"Referer": "http://www.v2ex.com/signin"

}

v2ex_session = requests.Session()

f = v2ex_session.get(url,headers=header)

soup = BeautifulSoup(f.content,"html.parser")

once = soup.find('input',{'name':'once'})['value']

print(once)

postData = { 'u': 'whatbeg',

'p': '*****',

'once': once,

'next': '/'

}

v2ex_session.post(url,

data = postData,

headers = header)

f = v2ex_session.get('http://www.v2ex.com/settings',headers=header)

print(f.content.decode())

然后运行发现成功登录:

591194-20160325191346245-1798901624.png

上面趴下来的网页源代码即为http://www.v2ex.com/settings的代码。这里once为91279.

591194-20160325191502495-25397886.png

至此,登录成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值