Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用python填写在线表单;标准实现不起作用_Python_Forms_Http_Login - Fatal编程技术网

使用python填写在线表单;标准实现不起作用

使用python填写在线表单;标准实现不起作用,python,forms,http,login,Python,Forms,Http,Login,我正在使用Python 2.7.5尝试登录到一个网站。我需要登录到此站点,然后导航到其他几个页面以从中提取表。不过现在,我的问题在于只需登录该站点。登录页面的默认设置如下所示: <form action="/session" class="text" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" v

我正在使用Python 2.7.5尝试登录到一个网站。我需要登录到此站点,然后导航到其他几个页面以从中提取表。不过现在,我的问题在于只需登录该站点。登录页面的默认设置如下所示:

<form action="/session" class="text" method="post"><div style="margin:0;padding:0;display:inline"><input name="authenticity_token" type="hidden" value="xeSbOkcWd444xhHyLj82wLS62qfH72De+7lwIhWFRd4=" /></div>    <p>
    <label for="login">Username</label><br />
    <input id="login" name="login" type="text" /><br />
    <label for="password">Password</label><br/>
    <input id="password" name="password" type="password" />
    <a href="/forgot_password">(Forgotten your password?)</a>
</p>

<p>
    <input id="remember_me" name="remember_me" type="checkbox" value="1" />
    <label class="shiftedlabel" for="remember_me">Remember me</label>
</p>

<p>
    <br /><input name="commit" type="submit" value="Log in" />
</p>
</form>
我在原始的“登录数据”中添加了两个字段,“记住我”和“提交”

当我运行这段代码时,我得到了一个pass worded页面的打印输出,但是它有一个错误,我必须登录才能看到这个页面,并且不能看到我需要的表。请注意,网站上这个页面不存在.php扩展名,但我不知道这有多大区别

另一个相关的注意事项是,我为这类事情找到的另一个最常见的解决方案是使用mechanize模块。然而,我无法安装它用来自行安装的“easy installer”工具,因为我对这个工具还比较陌生,所以无法诊断问题。但这是另一个问题


谢谢你的帮助:)

我建议你看看这个程序。这对于查找发送到服务器的数据非常有用,之后用urllib模拟相同的请求通常非常简单


在你的情况下,看起来你并没有在你的帖子中添加AudioTythyTooTM的值,“记住我”这个名字实际上是“记住我”,而“用户名”实际上是“登录”。

你应该认真考虑这类事情。对不起,我意识到我忘了提我看过机械化了。但无法安装它,因为我无法让安装程序首先工作。urlencode中的“记住我”不应该是“记住我”吗?不幸的是,这并没有解决问题。但将其编辑为原始版本。不幸的是,更改为“登录”和“记住我”不起作用。我将签出该程序,看看这是否有助于解决这个问题。您仍然需要添加真实性(令牌):啊,对不起,我错过了。我也不知道这个键实际上是什么,在刷新浏览器中的源代码时,我看到它在每次刷新时都会发生变化。如何将其添加到代码中?您需要从网页中删除它。考虑使用正则表达式。
import urllib, urllib2, cookielib

username = 'namehere'
password = 'passwordhere'

cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
login_data = urllib.urlencode({'Username' : username, 'password' : password, 'Remember_me' : "1", 'commit' : 'Log in'})
opener.open('http://example.org/login.php', login_data)
resp = opener.open('http://example.org/password_protected_page')
print resp.read()