【发布时间】:2020-03-02 07:17:40
【问题描述】:
我有一个 url,我需要运行它才能进行刷新。它将刷新数据缓存并在 tableau server 中显示最新上传的数据。网址是这样的:
http://servername/views/workbookname/dashboard1?:refresh=yes
当我使用 webbrowser 库打开 url 时,会执行刷新,但我得到一个打开的浏览器。当我使用请求获取 url 时,它不会刷新并给我一个 200 的响应,我认为这是成功的。
有人知道为什么会这样吗?如何在执行 get 功能时静默使用 webbrowser 库打开 url 并在之后关闭它,或者让请求充当 webbrowser?
import webbrowser
url = 'http://servername/views/workbookname/dashboard1?:refresh=yes'
webbrowser.open(url)
import requests
url = "http://servername/views/workbookname/dashboard1?:refresh=yes"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.76 Safari/537.36', "Upgrade-Insecure-Requests": "1","DNT": "1","Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language": "en-US,en;q=0.5","Accept-Encoding": "gzip, deflate"}
html = requests.get(url,headers=headers)
print(html)
【问题讨论】:
-
您在这里的最终目标是什么?只是为了刷新数据?或者之后做一些工作?如果有,是什么样的工作?根据您的目标,实施可能会完全不同。
-
尝试使用
requests.post调用来执行请求。 -
@JackTaylor 是的,只是用 ?:refresh=yes 模拟网页的运行
-
@b_c 我试过了,但没用
-
Tableau 社区论坛上的 This post 建议您应该使用 API 直接发出刷新命令,而不是通过代码通过浏览器发出。他们确实有一个 python library 可供您使用(与 JavaScript 不同)。
标签: python python-3.x tableau-api