python - 使用python请求登录网站

标签 python post authentication python-requests

我在从 python 脚本登录网站时遇到了一些困难,以便稍后在连接后从中检索数据。 我认为 HTML 页面中需要用户名和密码的部分如下:

<div class="contentLogin">
        <form action="/login/loginSubmit" method="post" class="memberLogin">
    <table cellpadding="0" cellspacing="0" border="0" >
        <tr>
            <td><label class="color2">Déjà membre</label></td>
            <td>&nbsp;</td>
            <td><input type="text" value="pseudo" class="input" name="login" id="login" /></td>
            <td><input type="password" value="pass" class="input" name="pass" id="pass" /></td>
            <td><input type="submit" value="ok" class="color2 loginSubmit" /></td>
        </tr>
        <tr>
            <td colspan="3"></td>
            <td colspan="2" >
                <a href="#" class="forgotPassword color2" id="forgotPassword">Mot de passe oublié ?</a>
            </td>
        </tr>
    </table>
</form>    </div>

我想使用 python 语言的“请求”模块来执行将我连接到站点的 POST 请求。 我的代码已经包含以下命令:

import requests
pars = {'login': 'dva2tlse', 'pass': 'VeryStrong', 'action': 'Idunno'}
resp = requests.post("http://www.example.com", params=pars)

但它似乎不起作用,因为我什至不知道应该在 POST 请求中指示哪个操作。 (我什至不知道如何使用它,因为我从来没有做过) 谢谢你帮助我使一切正常工作, 大卫

最佳答案

更改requests.post中的url值匹配 <form action> 中给出的那个属性。

此外,删除 action键入您的 pars词典。

pars = { 'login': 'dva2tlse', 'pass': 'VeryStrong' }
resp = requests.post("http://example.com/login/loginSubmit", params=pars)

如果你想在以后的页面调用中保持你的登录状态,你可以使用requests.Session()

s = requests.Session()
pars = { 'login': 'dva2tlse', 'pass': 'VeryStrong' }
resp = s.post("http://example.com/login/loginSubmit", params=pars)

只要您继续使用 s ,您将保持登录状态。

关于python - 使用python请求登录网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27690808/

相关文章:

python - 如何逐 block 读取大的 Azure blob 存储文件

python - 如何使 absolute_import 成为所有模块的默认值

http - 如何从http POST请求结果列表中显示listview构建器上的数据

c# - 使用 Mono 的 Windows 集成身份验证

ios - 需要帮助了解应用程序的 ios http 身份验证

c++ - mongodb C++ 驱动验证

python - 针对超大数据集的快速排序问题

python - 如何从右创建非贪婪正则表达式?

java - 如何使用 JSON 数据对 Jersey rest 服务进行 post ajax 调用?

javascript - 来自 javascript 的 fetch 调用无法访问 java REST 服务