使用Python登录Web门户

时间:2016-05-03 12:53:34

标签: python-2.7

所以我遵循了许多关于如何使用urllib2使用python登录门户网站的指南,并使用' BeautifulSoup'来解析它。

我正在尝试登录此webportal,其登录表单方式嵌套there

我查看了源代码中的from标签,发现了这个

<form id="signinForm" action="/accounts/signin.ac" name="signinform" method="post" novalidate="true" autocomplete="off">

但链接 https://academia.srmuniv.ac.in/accounts/signin.ac无效。

有人可以帮助我。

修改

使用的代码:

from bs4 import BeautifulSoup import urllib2 import requests 
payload = {'username': 'some_username', 'password': 'some_password'} 
r = requests.get("academia.srmuniv.ac.in/accounts/signin.ac";, params=payload) 
data = r.text soup = BeautifulSoup(data) print soup.prettify()

1 个答案:

答案 0 :(得分:0)

正如评论中所述,您需要了解GETPOST请求之间的区别。

Get是一个基本的http请求,其中参数由url传递。它的大小和安全性非常有限。 Post是参数在请求正文中的时间。

在您的情况下,您需要POST请求,因此您需要使用requests.post("academia.srmuniv.ac.in/accounts/signin.ac";, params=payload)

此外,您需要使用会话以便登录持续存在。

这是一个小代码:

s = requests.Session()
r = s.post('your address', payload)

最后,关于参数,您需要传递电子邮件和密码(查看输入标签中的id),并且地址与ifram相对,但我不确定什么是正确的地址到给...

所以它应该给你:

import requests
from bs4 import BeautifulSoup

s = requests.Session()
payload = {'Email' : youremail, 'Password' : yourpwd}
r = s.post('https://academia.srmuniv.ac.in/accounts/signin.ac', payload)
data = r.text()
soup = BeautifulSoup(data)
print soup.pretify()

现在要访问网站上的任何页面,您只需要使用您的会话并获取或发布:

r2 = s.get('some other page behind the login page')
r3 = s.post('some other page with a post method', payload)