我每天都需要对公共Tableau仪表板上的可用数据进行更新。在定义了感兴趣的参数(时间序列频率,时间序列间隔等)之后,仪表板允许您下载序列。
如果可以使用Python或R自动将这些系列下载到数据库中,我的生活会相对容易一些。我已经尝试分析页面上的请求,但无法获得更多帮助。有什么办法可以自动化这个过程?
仪表板:https
:
//tableau.ons.org.br/t/ONS_Publico/views/DemandaMxima/HistricoDemandaMxima?
:
embed=
y&:
showAppBanner=
false&:
showShareOptions=
true&:
display_count=
no&:
showVizHome=no
这个答案与此类似,但是初始URL页和tableau基本URL不同。流程/算法本质上保持不变,但我将详细说明以下步骤:
图形是根据API的结果在JS中生成的:
POST https://tableau.ons.org.br/ROOT_PATH/bootstrapSession/sessions/SESSION_ID
SESSION_ID参数(除其他外)位于tsConfigContainer
用于构建iframe的URL的textarea中。
从https://tableau.ons.org.br/t/ONS_Publico/views/DemandaMxima/HistricoDemandaMxima?:embed=y&:showAppBanner=false&:showShareOptions=true&:display_count=no&:showVizHome=no开始:
tsConfigContainer
带有一堆json值的textareasession_id
和根路径(vizql_root
)https://tableau.ons.org.br/ROOT_PATH/bootstrapSession/sessions/SESSION_ID
使用sheetId
as表单数据进行POSThtml" target="_blank">代码:
import requests
from bs4 import BeautifulSoup
import json
import re
url = "https://tableau.ons.org.br/t/ONS_Publico/views/DemandaMxima/HistricoDemandaMxima"
r = requests.get(
url,
params= {
":embed":"y",
":showAppBanner":"false",
":showShareOptions":"true",
":display_count":"no",
"showVizHome": "no"
}
)
soup = BeautifulSoup(r.text, "html.parser")
tableauData = json.loads(soup.find("textarea",{"id": "tsConfigContainer"}).text)
dataUrl = f'https://tableau.ons.org.br{tableauData["vizql_root"]}/bootstrapSession/sessions/{tableauData["sessionid"]}'
r = requests.post(dataUrl, data= {
"sheet_id": tableauData["sheetId"],
})
dataReg = re.search('\d+;({.*})\d+;({.*})', r.text, re.MULTILINE)
info = json.loads(dataReg.group(1))
data = json.loads(dataReg.group(2))
print(data["secondaryInfo"]["presModelMap"]["dataDictionary"]["presModelHolder"]["genDataDictionaryPresModel"]["dataSegments"]["0"]["dataColumns"])
共享仪表板 您也可以向其他用户共享一个 Kibana 仪表板的链接,或者将仪表板嵌入到网页中。用户必须具有 Kibana 权限才能访问嵌入式仪表板。 如何分享一个仪表板: 点击侧边导航栏中的 Dashboard 。 打开您想共享的仪表板。 点击 Share 。 复制您想分享的链接或者您想嵌套的 iframe。您可以分享动态仪表板或者当前时间点的静态快照。 当共享仪表板快照链接的时候,请使用 Sho
问题内容: 请告知如何抓取AJAX页面。 问题答案: 概述: 首先,所有屏幕抓取都需要手动查看要从中提取资源的页面。在处理AJAX时,通常只需要分析一些内容,而不仅仅是HTML。 在处理AJAX时,这仅意味着您想要的值不在您请求的初始HTML文档中,而是将执行javascript,该javascript请求服务器提供您想要的其他信息。 因此,您通常可以简单地分析javascript并查看javas
问题内容: 如何使用python2.7获取公共IP?不是私有IP。 问题答案: 当前有几种选择: ip.42.pl jsonip.com httpbin.org ipify.org 以下是可以利用上述每种方法的确切方法。 ip.42.pl 这是我找到的第一个选项。对于脚本来说非常方便,您不需要在这里进行JSON解析。 jsonip.com 似乎该域的唯一目的是返回JSON中的IP地址。 httpb
vite配置引入了公共的scss文件,打包后,每个css文件都重复引入了global.scss文件中的内容,如何提取出一个公共的css文件?
问题内容: 我有两个数组: 我如何获得这两个数组中的常见项目列表 我无法使用,因为我想比较2个数组。 问题答案: 您还可以结合使用和: 我们考虑以下代码片段: 我用short和long s(10到100 s)(全部随机生成)做了一些(人工)基准测试。我总是用 我得到以下结果: 如果您不只转换为a,则更可取 结果说明 使用该方法使用“蛮力”搜索,该搜索具有时间复杂度 ,而与该方法相反。然而从转换到和
我有很多表,但它们有共同的自动增量。例如,我创建了我的第一个用户,它的id为1,然后我创建了一条消息,它的id为2,然后我创建了一条对消息的注释,它的id为3,但它的id应该为1,因为我没有任何其他注释或消息 我的用户: 我的信息: 我的评论是: 我将感谢任何帮助。