我有一个文件,gather.htm
这是一个带有 header/body
的有效 HTML 文件和 forms
.如果我双击桌面上的文件,它会在网络浏览器中正确打开,自动提交 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
请注意,在上面的第二个示例中,webbrowser.open()
调用工作正常,但 requests.post
才不是。
看来我尝试的所有操作都以同样的方式失败了 - 打开 URL 并且页面返回默认数据。该网站似乎从未收到 gather.htm
文件。
最佳答案
由于您的请求返回 200 OK
,因此将您的发布请求发送到服务器没有任何问题。很难给你一个确切的答案,但问题在于服务器如何处理请求。您的发布请求的格式可能是服务器无法识别的,或者服务器根本没有设置为处理它们。如果您自己管理网站,一些额外的详细信息会有所帮助。
作为最后的检查,请尝试以下操作:
r = requests.post(url=myUrl, data={'title':'test_file', 'file':f})
关于python - 如何使用 Python 将 .htm 文件通过管道传输到网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25576367/