带有aspx请求的Python登录表单

问题描述 投票:0回答:1

我是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)
python beautifulsoup
1个回答
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所需的所有参数的信息

  • 在谷歌浏览器中打开链接。
  • 打开开发人员控制台(fn + F12)。
  • 搜索登录文档(如果找不到,输入错误的详细信息并提交)。
  • 您将获得有关请求标头和POST参数的信息。
© www.soinside.com 2019 - 2024. All rights reserved.