2017-03-04 121 views
0

我想发布一个http表单并获得响应。我了解“请求”可能是要走的路。我正在尝试在此页上的登录表单上发布信息:www.dust2.dk/Login比较响应,以检查是否收到错误“Der er ikke registreret nogen bruger med den email”(“没有用户注册该用户电子邮件“)Python请求发布表格

不知何故窗体未被张贴或响应未被保存。我试图寻找解决方案,无济于事。这里是我的代码

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 

#imports 
import requests 

#code 
def main(): 

     r = requests.post('http://dust2.dk/Login', data = {'email' : '[email protected]', 'password' : 'testest'}) 

     if 'Der er ikke registreret nogen bruger med den email' in r.text: 
       print 'You done did it mate!' 
     else: 
       print 'Nope! Keep trying' 

正如你可能已经猜到结果是:“都能跟得上不断尝试,”如果我打印出来的应答r,我只是得到页面www.dust2.dk/Login的来源。你有什么我可能在这里做错了吗?

+0

打印出'r'的内容和响应码。为什么在答案就在那时猜测发生了什么? –

+0

我不会猜测:)提交表单时显示错误的电子邮件。我只是让python搜索html响应,而不是自己滚动。我忘了提及,我得到的回应只是原始页面的代码:www.dust2.dk/Login。我会更新我的问题。 – n0rd

+0

您如何知道网站期望名为'email'和'password'的字段?这个问题太广泛了,不经过大量的来回就无法回答。您应该请求网站运营商帮助通过Python登录。 –

回答

0

我不得不做类似的事情,通过发送一个Python请求。我跟着this。您需要导入并使用urllib和urllib2。

import urllib 
import urllib2 

url = 'http://dust2.dk/Login' 
values = {'email' : '[email protected]', 
      'password' : 'blahblah'} 

data = urllib.urlencode(values) 
req = urllib2.Request(url, data) 
response = urllib2.urlopen(req) 
the_page = response.read() 

编辑:实际上遵循this引导,而不是如果你使用Python 3 看看是否你想要做什么。

+0

谢谢您的回答。我实际上是在一个更高级的网站上开始使用urllib(2),我无法工作。我将在当前网站上尝试您的代码并报告结果。 – n0rd

+0

没有运气的例子。同样的问题。打印页面后,我只需获取原始页面。我会尝试你提到的指南。 – n0rd