Dan*_*ńka 3 python asp.net login web-scraping python-requests
我试图从我的学校页面浏览一些信息,但我很难过去登录.我知道有类似的威胁,我花了一整天阅读,但不能使它工作.
这是程序即时使用(用户名和密码已更改):
import requests
payload = {'ctl00$cphmain$Loginname': 'name', 'ctl00$cphmain$TextBoxHeslo': 'password'}
page = requests.post('http://gymnaziumbma.no-ip.org:81/login.aspx', payload)
open_page = requests.get("http://gymnaziumbma.no-ip.org:81/prehled.aspx?s=44&c=prub")
#Check content
if page.text == open_page.text:
print("Same page")
else:
print(open_page.text)
print("Different page!")
Run Code Online (Sandbox Code Playgroud)
你能告诉我,我做错了什么?我错过了一些参数吗?请求是否适合这个?我正在尝试使用robobrowser和BeautifulSoup,但也不起作用.我打赌我错过了一些非常微不足道的东西.
我使用的是Python 3.5
首先,您没有使用会话,所以即使您的第一篇文章成功登录,第二篇文章也对此一无所知.其次,您缺少需要发布的数据__VIEWSTATEGENERATOR和__VIEWSTATE,您可以使用BeautifulSoup从源解析:
from bs4 import BeautifulSoup
data = {'ctl00$cphmain$Loginname': 'name', 'ctl00$cphmain$TextBoxHeslo': 'password'}
# A Session object will persist the login cookies.
with requests.Session() as s:
page = s.get('http://gymnaziumbma.no-ip.org:81/login.aspx')
soup = BeautifulSoup(page.content)
data["___VIEWSTATE"] = soup.select_one("#__VIEWSTATE")["value"]
data["__VIEWSTATEGENERATOR"] = soup.select_one("#__VIEWSTATEGENERATOR")["value"]
s.post('http://gymnaziumbma.no-ip.org:81/login.aspx', data=data)
open_page = s.get("http://gymnaziumbma.no-ip.org:81/prehled.aspx?s=44&c=prub")
#Check content
if page.text == open_page.text:
print("Same page")
else:
print(open_page.text)
print("Different page!")
Run Code Online (Sandbox Code Playgroud)
您可以查看Chrome开发者工具中发布的所有表单数据.
上面发布的内容应该足以登录,如果不是您需要的任何值可以使用BeautifulSoup从登录表中解析.
| 归档时间: |
|
| 查看次数: |
3749 次 |
| 最近记录: |