パブリックタブローダッシュボードをスクレイプする方法は?

パトリック・リベイロ・マイア

毎日、公開されている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のページやタブローのベースURLが異なります。プロセス/アルゴリズムは基本的に同じですが、手順を詳しく説明します。

グラフィックは、APIの結果からJSで生成されます。

POST https://tableau.ons.org.br/ROOT_PATH/bootstrapSession/sessions/SESSION_ID

SESSION_IDパラメーターは、(とりわけ)tsConfigContaineriframeの構築に使用される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値を持つidのtextareaがあります
  • session_idおよびルートパスを抽出します(vizql_root
  • 上のPOSTにするhttps://tableau.ons.org.br/ROOT_PATH/bootstrapSession/sessions/SESSION_IDsheetId、フォームデータ等を
  • 結果からjsonを抽出します(結果はjsonではありません)

コード:

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"])

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

RDWeb:「リモート PC に接続」のみのクリップボードとプリンターのリダイレクトをブロックする方法

分類Dev

Tableauパブリックダッシュボードからのスクレイピングデータ

分類Dev

アップロードをパブリック/アップロードにリダイレクトする

分類Dev

ボタンクリックでブートストラップドロップダウンメニューを閉じる方法は?

分類Dev

パンダ、マルチインデックスデータフレームでサブセットを使用して値をドロップする方法は?

分類Dev

ダッシュボードデスクトップレイアウトはレスポンシブですか?

分類Dev

busyboxシェルスクリプトで非ブロッキングモードで名前付きパイプ(FIFO)をフラッシュする方法は?

分類Dev

HoloViews / Bokehのプロット間にウィジェット(セレクター)とインタラクティブ機能(タップストリーム)を備えたダッシュボードを作成するにはどうすればよいですか?

分類Dev

ドロップダウンメニューボタンをクリックすると、リンクを開くブートストラップ

分類Dev

マウスクリックのハイパーリンクをシミュレートするポップアップウィンドウがブロックされ、タブで開かない

分類Dev

パスワードログインモーダルを作成する方法、送信ボタンをクリックし、ブートストラップ3を使用してリンクを含む別のモーダルを開きます

分類Dev

Yii2:アクティブなデータプロバイダーをキャッシュする方法は?

分類Dev

マップをクリックした後にのみデータがプロットに表示されるTableauダッシュボードをスクレイプするにはどうすればよいですか?

分類Dev

タイプスクリプトでフレームオブジェクトのキーストロークをシミュレートする方法は?(sendKeysメソッドを使用しないでください)

分類Dev

htaccessを使用して末尾のスラッシュの後にパラメータを使用してすべてのサブドメインを別のサブドメインにリダイレクトする方法は?

分類Dev

ブーストスレッドをブロックしてウェイクアップする方法は?

分類Dev

ブーストスレッドをブロックしてウェイクアップする方法は?

分類Dev

reactjsでダッシュボードへのログインリダイレクトを処理する方法

分類Dev

Apps Script:2つのボタンをクリックするだけでダイアログボックスをループでロードする方法は?

分類Dev

ネットワーク/コンピュータのパブリックIPアドレスをWebサイトに更新するプログラム

分類Dev

CrashlyticsのファブリックダッシュボードでAndroidアプリのパッケージ名を変更する方法

分類Dev

CrashlyticsのファブリックダッシュボードでAndroidアプリのパッケージ名を変更する方法

分類Dev

剣道UI:タブストリップのコンテンツは、ボタンをクリックすると同じタブストリップ内の別のビューにリダイレクトされる必要があります

分類Dev

ブートストラップボタンのドロップダウン子要素のクラスは、他のボタンのドロップダウンアイテムをクリックすると削除されます

分類Dev

リモートでマスターブランチへのプッシュをブロックする方法

分類Dev

KeystoneJSリストCSVのダウンロード/エクスポートでリレーションシップフィールドタイプのオブジェクトIDを名前/タイトルに置き換える方法は?

分類Dev

既存のレスポンシブナビゲーションメニューにドロップダウンリンクを追加する方法

分類Dev

ブートストラップ:モーダルからボックスシャドウを削除する方法は?

分類Dev

ブールインデックス付きのパンダデータフレーム(または他の高速ソリューション)からエッジリスト(itertoolsの組み合わせスタイル)をすばやく作成する方法は?

Related 関連記事

  1. 1

    RDWeb:「リモート PC に接続」のみのクリップボードとプリンターのリダイレクトをブロックする方法

  2. 2

    Tableauパブリックダッシュボードからのスクレイピングデータ

  3. 3

    アップロードをパブリック/アップロードにリダイレクトする

  4. 4

    ボタンクリックでブートストラップドロップダウンメニューを閉じる方法は?

  5. 5

    パンダ、マルチインデックスデータフレームでサブセットを使用して値をドロップする方法は?

  6. 6

    ダッシュボードデスクトップレイアウトはレスポンシブですか?

  7. 7

    busyboxシェルスクリプトで非ブロッキングモードで名前付きパイプ(FIFO)をフラッシュする方法は?

  8. 8

    HoloViews / Bokehのプロット間にウィジェット(セレクター)とインタラクティブ機能(タップストリーム)を備えたダッシュボードを作成するにはどうすればよいですか?

  9. 9

    ドロップダウンメニューボタンをクリックすると、リンクを開くブートストラップ

  10. 10

    マウスクリックのハイパーリンクをシミュレートするポップアップウィンドウがブロックされ、タブで開かない

  11. 11

    パスワードログインモーダルを作成する方法、送信ボタンをクリックし、ブートストラップ3を使用してリンクを含む別のモーダルを開きます

  12. 12

    Yii2:アクティブなデータプロバイダーをキャッシュする方法は?

  13. 13

    マップをクリックした後にのみデータがプロットに表示されるTableauダッシュボードをスクレイプするにはどうすればよいですか?

  14. 14

    タイプスクリプトでフレームオブジェクトのキーストロークをシミュレートする方法は?(sendKeysメソッドを使用しないでください)

  15. 15

    htaccessを使用して末尾のスラッシュの後にパラメータを使用してすべてのサブドメインを別のサブドメインにリダイレクトする方法は?

  16. 16

    ブーストスレッドをブロックしてウェイクアップする方法は?

  17. 17

    ブーストスレッドをブロックしてウェイクアップする方法は?

  18. 18

    reactjsでダッシュボードへのログインリダイレクトを処理する方法

  19. 19

    Apps Script:2つのボタンをクリックするだけでダイアログボックスをループでロードする方法は?

  20. 20

    ネットワーク/コンピュータのパブリックIPアドレスをWebサイトに更新するプログラム

  21. 21

    CrashlyticsのファブリックダッシュボードでAndroidアプリのパッケージ名を変更する方法

  22. 22

    CrashlyticsのファブリックダッシュボードでAndroidアプリのパッケージ名を変更する方法

  23. 23

    剣道UI:タブストリップのコンテンツは、ボタンをクリックすると同じタブストリップ内の別のビューにリダイレクトされる必要があります

  24. 24

    ブートストラップボタンのドロップダウン子要素のクラスは、他のボタンのドロップダウンアイテムをクリックすると削除されます

  25. 25

    リモートでマスターブランチへのプッシュをブロックする方法

  26. 26

    KeystoneJSリストCSVのダウンロード/エクスポートでリレーションシップフィールドタイプのオブジェクトIDを名前/タイトルに置き換える方法は?

  27. 27

    既存のレスポンシブナビゲーションメニューにドロップダウンリンクを追加する方法

  28. 28

    ブートストラップ:モーダルからボックスシャドウを削除する方法は?

  29. 29

    ブールインデックス付きのパンダデータフレーム(または他の高速ソリューション)からエッジリスト(itertoolsの組み合わせスタイル)をすばやく作成する方法は?

ホットタグ

アーカイブ