小编Tag*_*ano的帖子

从 Tableau 地图中抓取数据

我正在尝试提取伊利诺伊州纳洛酮配送中心的位置和名称,以用于阿片类药物危机的研究项目。

公共卫生部可从这里访问此表格生成的仪表板https://idph.illinois.gov/OpioidDataDashboard/

我已经尝试了我能找到的一切。首先更改 URL 以使用 Tableau 的界面“下载”数据。那只能让我下载 pdf 地图,而不是其背后的实际数据集。其次,我修改了我在 Stack Overflow 上见过几次的 python 脚本来尝试请求数据。但是,我认为它遇到了某种错误。代码如下。

url = "https://interactive.data.illinois.gov/t/DPH/views/opioidTDWEB_prod/NaloxoneDistributionLocations"

r = requests.get(
    url,
    params= {
        ":embed":"y",
        ":showAppBanner":"false",
        ":showShareOptions":"true",
        ":display_count":"no",
        "showVizHome": "no"
    }
)
soup = BeautifulSoup(r.text, "html.parser")
print(soup)
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"])

Run Code Online (Sandbox Code Playgroud)

感谢任何帮助。

python screen-scraping web-scraping tableau-api

3
推荐指数
1
解决办法
3842
查看次数