使用Python';s请求模块
我试图从我的学校网页上浏览一些信息,但我很难通过登录。我知道也有类似的三个,我花了一整天的时间阅读,但无法让它工作 这是im使用的程序(用户名和密码已更改): 你能告诉我,我做错了什么吗?我是否缺少一些参数?这是个好方法吗?我试过robobrowser和BeautifulSoup,但都不行。我打赌我错过了一些非常琐碎的事情使用Python';s请求模块,python,asp.net,authentication,web-scraping,python-requests,Python,Asp.net,Authentication,Web Scraping,Python Requests,我试图从我的学校网页上浏览一些信息,但我很难通过登录。我知道也有类似的三个,我花了一整天的时间阅读,但无法让它工作 这是im使用的程序(用户名和密码已更改): 你能告诉我,我做错了什么吗?我是否缺少一些参数?这是个好方法吗?我试过robobrowser和BeautifulSoup,但都不行。我打赌我错过了一些非常琐碎的事情 我首先使用的是Python 3.5,你没有使用,所以即使你的第一篇文章成功地让你登录到第二篇文章,你也不知道。其次,您缺少需要发布的数据、_VIEWSTATEGENERATO
我首先使用的是Python 3.5,你没有使用,所以即使你的第一篇文章成功地让你登录到第二篇文章,你也不知道。其次,您缺少需要发布的数据、_VIEWSTATEGENERATOR和_VIEWSTATE,您可以使用BeautifulSoup从源解析这些数据: 您可以看到在Chrome开发工具中发布的所有表单数据
上面发布的内容应该足以登录,如果没有任何需要的值,可以使用BeautifulSoup从登录表中解析。非常感谢。我不知道会议的情况。当我尝试使用您的解决方案时,我遇到了与我尝试使用RoboBrowser时相同的错误:
code:data[“\uuu viewstate”]=soup。选择一个(“\uuu viewstate”)[“value”]TypeError:“NoneType”对象不可下标
。你知道为什么会这样吗?是的,我应该用\uu VIEWSTATE
的所有大写字母,现在应该可以了。非常感谢。在向数据中添加另外三个参数后,它工作正常:)@padraiccnningham,Hi,我尝试了这段代码,但是如果page.text==open\u page.text:AttributeError:'str'对象没有属性'text',则出现错误,因此我对这些行进行了注释,并尝试了打印open\u page.content,它打印了登录页面的内容,而不是登录后要打开的页面,请问有什么建议吗?编辑:仅打印open\u页面
一项就给出200的响应。@KiDo,你想登录哪个网站?
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!")
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!")