我有一个文件,gather.htm是一个有效的HTML文件,其中包含header/bodyforms。如果我双击桌面上的文件,它将在web浏览器中正确打开,自动提交form数据(通过<SCRIPT LANGUAGE="Javascript">document.forms[2].submit();</SCRIPT>),页面将用请求的数据刷新。
我想让Python使用requests.post(url)进行gather.htm调用。然而,我的研究和我的跟踪和错误并没有提供解决方案。
这是怎么做到的?
我尝试过这些方法(基于网络上的例子)。我怀疑我遗漏了一些简单的东西!

myUrl = 'www.somewhere.com'
filename='/Users/John/Desktop/gather.htm'
f = open (filename)
r =  requests.post(url=myUrl, data =  {'title':'test_file'},  files =  {'file':f})
print r.status_code
print r.text

以及:
htmfile = 'file:///Users/John/Desktop/gather.htm'
files = {'file':open('gather.htm')}
webbrowser.open(url,new=2)
response = requests.post(url)
print response.text

注意,在上面的第2个示例中,webbrowser.open()调用工作正常,但requests.post调用不正常。
似乎我尝试的所有操作都以同样的方式失败了-URL被打开,页面返回默认数据。似乎网站从未收到gather.htm文件。

最佳答案

由于您的请求返回200 OK,因此将post请求发送到服务器没有任何错误。很难给出确切的答案,但问题在于服务器如何处理请求。您的post请求的格式可能是服务器无法识别的,或者服务器根本没有设置为处理这些请求。如果你是自己管理网站,一些额外的细节会有帮助。
作为最终检查,请尝试以下操作:

r = requests.post(url=myUrl, data={'title':'test_file', 'file':f})

关于python - 如何使用Python将.htm文件通过管道传输到网站,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25576367/

10-12 23:07