gpt4 book ai didi

Python 请求重定向登录

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

这是一个网站http://pro.wialon.com/我想使用 python requests 模块登录。登录和通过是演示。

import requests
with requests.Session()as c:
url = 'http://pro.wialon.com/'
payload = dict(user='demo',
passw='demo',
login_action='login')
r = c.post(url, data=payload, allow_redirects=True)
print(r.text)

坦率地说,我想获得报告(在报告选项卡上)作为响应。但我不知道如何登录。

最佳答案

发布网址不正确,并且您缺少表单数据,您还需要执行初始请求,发布到正确的网址,然后获取http://pro.wialon.com/service.html:

data = {"user": "demo",
"passw": "demo",
"submit": "Enter",
"lang": "en",
"action": "login"}

head = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}

with requests.Session() as c:
c.get('http://pro.wialon.com/')
url = 'http://pro.wialon.com/login_action.html'
c.post(url, data=data, headers=head)
print(c.get("http://pro.wialon.com/service.html").content)

您可以在 Chrome 开发工具的网络选项卡下看到该帖子:

enter image description here

此外,post 或 get 请求的默认设置是允许重定向,因此您无需在此处指定。

您可以在登录页面源代码中看到表单操作:

<form class="login_bg_form" id="login_form" action="login_action.html" method="POST">

我们可以使用bs4来从表单中解析路径,而不是对路径进行硬编码:

import requests
from bs4 import BeautifulSoup
from urlparse import urljoin

data = {"user": "demo",
"passw": "demo",
"submit": "Enter",
"lang": "en",
"action": "login"}

head = {"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}

with requests.Session()as c:
soup = BeautifulSoup(c.get('http://pro.wialon.com/').content)
redir = soup.select_one("#login_form")["action"]
url = 'http://pro.wialon.com/login_action.html'
c.post(url, data=data, headers=head)
print(c.get(urljoin("http://pro.wialon.com/", redir)).content)

现在唯一的问题是数据大部分是使用 ajax 请求填充的,因此如果您想抓取数据,则需要模仿请求。

关于Python 请求重定向登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38021429/

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