gpt4 book ai didi

python - 请求有问题/汤很美

转载 作者:太空宇宙 更新时间:2023-11-04 03:18:59 25 4
gpt4 key购买 nike

我正在尝试学习使用 Python 的一些 Web 功能,并认为我会通过编写脚本来登录我大学的网页来练习。最初我使用 urllib2 编写代码,但用户 alecxe 好心地为我提供了使用 requests/BeautifulSoup 的代码(请参阅:Website form login using Python urllib2)

我正在尝试登录页面 http://reg.maths.lth.se/ .该页面有一个学生登录表单和一个教师登录表单(我显然是想以学生身份登录)。要登录,应该提供一个“Personnummer”,它基本上相当于一个社会安全号码,所以我不想发布我的有效号码。但是,我可以透露它的长度应该是 10 位数字。

我得到的代码(对最终打印语句稍作改动)如下:

import requests
from bs4 import BeautifulSoup

PNR = "00000000"

url = "http://reg.maths.lth.se/"
login_url = "http://reg.maths.lth.se/login/student"
with requests.Session() as session:
# extract token
response = session.get(url)
soup = BeautifulSoup(response.content, "html.parser")
token = soup.find("input", {"name": "_token"})["value"]

# submit form
session.post(login_url, data={
"_token": token,
"pnr": PNR
})

# navigate to the main page again (should be logged in)
#response = session.get(url) ##This is deliberately commented out

soup = BeautifulSoup(response.content, "html.parser")
print(soup)

因此应该打印POST pnr后获得的页面的源代码。

代码运行时,总是返回主页面的源代码http://reg.maths.lth.se/这是不正确的。例如,如果您尝试手动输入错误长度的 pnr,即 0,您应该被定向到如下所示的页面:

enter image description here位于 url http://reg.maths.lth.se/login/student,其源代码与主页的源代码明显不同。

有什么建议吗?

最佳答案

您没有将 POST 结果分配给 response,而只是打印出第一个 GET 请求的结果。

所以,

# submit form
session.post(login_url, data={
"_token": token,
"pnr": PNR
})

应该是

response = session.post(login_url, data={
"_token": token,
"pnr": PNR
})

关于python - 请求有问题/汤很美,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35297316/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com