Python urllib2 发送POST请求

1 投票
2 回答
599 浏览
提问于 2025-04-17 00:07

我想打开一个网页,然后找到一个数字,把它和另一个随机数字相乘,然后把结果提交到这个网页上。我的做法是先把网页保存为HTML文件,然后找到这两个数字,进行相乘,然后以POST的方式发送结果。但是

post = urllib.urlencode({'answer': goal, 'submit': 'Submit+Answer'})
req2 = urllib2.Request("example", None, headers)
response = urllib2.urlopen(req, post) #this causes it not to work it opens the page a second time

这样做会导致我第二次连接网页,因此发送的随机数字是错误的,因为这时会生成一个新的随机数字。那么,我该如何在不重新打开网页的情况下,向已经打开的网页发送POST请求呢?

2 个回答

0

我觉得urllib这个库不支持保持连接一直打开,就像这里说的那样.

看起来你需要在发送请求的时候,把最初计算的结果也一起发送回去。或者在发送答案的时候,顺便把数据也一起发过去,这样服务器才能把问题和答案对应起来。

4

你可能想用一个叫做 mechanize 的工具,它可以让你在Python中实现有状态的网页浏览。你可以用它来加载一个网址,从页面中读取一个值,进行乘法运算,然后把这个数字放到页面上的一个表单里,最后提交这个表单。

这听起来像是你想要做的事情吗? 这个页面 提供了一些关于如何使用 mechanize 填写表单的信息。

撰写回答