所以我遵循了许多关于如何使用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()
答案 0 :(得分:0)
正如评论中所述,您需要了解GET
和POST
请求之间的区别。
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)