Problem Summary
I'm trying to scrape data from a Tableau Public dashboard (ASU System Open Checkbook), but the table data is rendered as blob images rather than HTML text, making traditional web scraping impossible.
What I've Tried
I've successfully:
Identified the scroll mechanism (
.tvimagesContainerwithtoppositioning)Implemented scrolling through the Tableau view
Located the data container with
height: 104599px
However, my text extraction fails because Tableau renders the table as canvas-based blob images instead of DOM text elements
# Scrolling works fine - I can navigate through the data
def scroll_tableau_by_position(self, pixels_down=500):
current_top = self.driver.execute_script(
"return parseInt(arguments[0].style.top) || 0;",
self.images_container
)
new_top = current_top - pixels_down
self.driver.execute_script(
"arguments[0].style.top = arguments[1] + 'px';",
self.images_container, new_top
)
# Text extraction fails - no text in DOM!
def extract_tableau_data_advanced(self):
all_text = self.driver.execute_script("""
// TreeWalker finds nothing because data is in blob images
var walker = document.createTreeWalker(
element,
NodeFilter.SHOW_TEXT,
null,
false
);
// Returns empty - text is rendered as pixels in images
""")
The Core Issue
When I inspect the page, I see:
The table data (Payee names, dates, amounts) exists only as rendered pixels inside these blob images, not as accessible text in the DOM.
What I Need
How can I extract the actual data from this Tableau visualization?
I've considered:
OCR on screenshots - Would work but very slow and error-prone
Tableau's download button - Can't find it or it's disabled on this public dashboard
API/Data endpoint - Not sure if Tableau Public exposes data endpoints
Question
What's the standard/best approach to scrape data from Tableau Public dashboards when the data is rendered as blob images?
Is there a way to access Tableau's underlying data API?
Can I intercept the network requests that fetch the tile data?
Is there a hidden export/download option I'm missing?
Should I be using Tableau's official API instead?
Environment
Python 3.x
Selenium + undetected_chromedriver
Target: https://public.tableau.com/app/profile/asusystem/viz/ASUSystemOpenCheckbook/Main
Any guidance on the best approach would be greatly appreciated!