带有aspx请求的Python登录表单

时间:2018-03-05 11:33:16

标签: python beautifulsoup

我是Python新手。所以请不要生气,如果我的问题太粗糙,我的英语不好T.T我想从基于ASP的公司CMS的管理页面中抓取数据。我在网上看了很多关于BeautifulSoup和Request Module的内容。但这对我没有用。你能给我一些帮助/提示吗?提前致谢。

登录网址为:

  

http://thuvientulap.org/login.aspx

和我的代码:

#import libraries
import csv
import requests
from bs4 import BeautifulSoup

URL="http://thuvientulap.org/login.aspx"

username="user"
password="password"

s=requests.Session()
r=s.get(URL)

soup=BeautifulSoup(r.content,'html.parser')

VIEWSTATE=soup.find(id="__VIEWSTATE")['value']
EVENTVALIDATION=soup.find(id="__EVENTVALIDATION")['value']
VIEWSTATEGENERATOR=soup.find(id="__VIEWSTATEGENERATOR")['value']

login_data={"__VIEWSTATE":VIEWSTATE,
"txt_name_login":username,
"txt_password_ogin":password,
"__VIEWSTATE":VIEWSTATE,
"__EVENTVALIDATION":EVENTVALIDATION,
"__VIEWSTATEGENERATORT":VIEWSTATEGENERATOR,
}

r = s.post(URL, data=login_data)

admin_url =("http://thuvientulap.org/admin.aspx")
r = s.get(admin_url)

print (r.url)
print (r.text)

1 个答案:

答案 0 :(得分:0)

您没有传递任何标题:

import requests
s=requests.Session()
url ="http://thuvientulap.org/login.aspx"
r=s.get(url)
dct=s.cookies.get_dict()#you will get a ASP.net cookie pass it in header 
                         along with other headers


aid=dct["ASP.NET_SessionId"]
head = {ASP.NET_SessionId=aid,.....}
r = s.post(url, data=login_data,headers=head)

获取有关您必须传递哪些特定标头以及POST

所需的所有参数的信息
  • 在谷歌浏览器中打开链接。
  • Open Developers Console(fn + F12)。
  • 搜索登录文档(如果找不到,输入错误的详细信息并提交)。
  • 您将获得有关请求标头和POST参数的信息。