Python:通过POST请求URL并在浏览器中显示结果

Ser*_*gio 5 python http urllib2 python-webbrowser

我是一个大型GUI应用程序的开发人员,我们有一个用于错误跟踪的网站.任何人都可以向bug跟踪站点提交新的bug.我们可以从桌面应用程序中检测到某些故障(即未处理的异常),在这种情况下,我们希望在用户预定义的浏览器中打开submit-new-bug表单,将我们可以收集的有关故障的任何信息添加到某些表单字段中.我们可以使用GET或POST http方法检索submit-new-bug表单,我们可以为该表单提供默认字段值.所以从http服务器端一切都很好.

到目前为止,我们可以使用Python标准库中webbrowser模块成功打开URL,将默认值作为GET参数传递给URL .但是,此方法存在一些限制,例如某些浏览器(特别是MS IE)的URL允许的最大长度.该webbrowser模块似乎没有办法使用POST请求URL.OTOH有urllib2模块提供我们想要控制的类型,但据我所知它缺乏用户的首选浏览器打开的网页检索的可能性.

有没有办法让我们想要的这种混合行为(具有urllib2更高级别功能的精细控制webbrowser)?

PS:我们已经考虑过将URL重新urllib2保存,将其内容保存到临时文件并打开该文件的可能性webbrowser.这是一个有点讨厌的解决方案,在这种情况下,我们将不得不处理其他问题,如相对URL.有更好的解决方案吗?

NID*_*NgL 6

这不是正确的答案。但它也有效

import requests
import webbrowser

url = "https://www.facebook.com/login/device-based/regular/login/?login_attempt=1&lwv=110"
myInput = {'email':'mymail@gmail.com','pass':'mypaass'}
x = requests.post(url, data = myInput)
y = x.text
f = open("home.html", "a")
f.write(y)
f.close()
webbrowser.open('file:///root/python/home.html')
Run Code Online (Sandbox Code Playgroud)


Aco*_*orn 5

我不知道您可以在Web浏览器中打开POST请求的结果的任何方式,而无需将结果保存到文件中并打开它。

采取另一种方法并将数据临时存储在服务器上该怎么办?然后,可以使用简单的id参数在浏览器中打开页面,并显示已保存的部分填充的表单。