如何构造HTTP POST响应?如何用Python和urllib2重新创建它们来模拟填写表单?

2024-10-01 07:50:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我建立了一个简单的网站,上面只有一个表单,这样我就可以练习用Python:http://www.wix.com/yoshyaro/status-check填写表单。在

查看urllib2-缺少的手册,我的代码配置如下

url = 'http://www.wix.com/yoshyaro/status-check'
values = {'name':"my name",
          'email':"yoshyaro@yahoo.com",
          'subject':"Subject",
          'Message':"Hello"}

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

根据我的理解,这段代码可以正常工作,我们将向服务器发送一个POST请求,其中包含请求中打包的所有表单数据。然而,我使用的方法一定是做错了,因为什么都没有发生。我没有收到任何确认邮件。在

所以我手工填写了表格,点击提交,然后看了Chrome的网络标签。我看到一个POST请求包含以下信息。在

^{pr2}$

我注意到的第一件事是请求URL与我设置的URL不同。所以我把代码改成:

url = 'http://editor.wix.com/wixpress/sendEmail.jspx'
values = {'name':"my name",
          'email':"yoshyaro@yahoo.com",
          'subject':"Subject",
          'Message':"Hello"}

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

但运行此命令会产生一个http403错误:Forbidden。现在我不再假设我要做的就是以适当的方式重新创建一个HTTP请求,我开始再次查看Network选项卡,看看这样的请求到底是什么样子的。在这一点上,我的计划是尝试用手重新制作一个。然而,这就是我的困境。我没有看到任何关于POST请求中实际内容的信息。我看到了输出结果,“[name]向您发送了一条消息”,在发布后会显示出来,但是我在任何地方都找不到任何实际的表单值。在

所以我就在这里。我不确定如何重新创建一个POST请求,因为我甚至不确定一个POST请求的外观。。在


Tags: 代码namecomhttpurl表单dataresponse