Das sind die Elemente, die ich für die Tabelle < /p>
inspiziert habe
Code: Select all
TARGET_URL = "http://data.cityofchicago.org/stories/s/Crimes-2001-to-present-Dashboard/5cd6-ry5g"
GRID_ROOT_SELECTOR = (By.CSS_SELECTOR, "div.ag-root-wrapper.ag-layout-normal")
HORIZONTAL_SCROLL = "div.ag-body-horizontal-scroll-viewport"
driver.get(TARGET_URL)
< /code>
Dann habe ich die Tabellenelemente der URL und dann alle Zellenelemente durchgeführt, um alle Daten in All_data zu speichern: < /p>
try:
WebDriverWait(driver, 60).until(
EC.presence_of_element_located(GRID_ROOT_SELECTOR) # Find the exact element of the table since it's an AG Grid
)
# Scroll horizontally
scroll_container = driver.find_element(By.CSS_SELECTOR, HORIZONTAL_SCROLL)
last_scroll_pos = 0
while True:
rows_data = driver.execute_script("""
return Array.from(document.querySelectorAll('div.ag-center-cols-container div[role="row"]')).map(row => {
const cells = row.querySelectorAll('div[role="gridcell"]');
return Array.from(cells).map(cell => cell.innerText.trim());
});
""")
all_data.append([row for row in rows_data])
# Scroll to the right
driver.execute_script("arguments[0].scrollLeft += 1000", scroll_container)
time.sleep(3)
curr_scroll_pos = driver.execute_script("return arguments[0].scrollLeft", scroll_container)
if curr_scroll_pos == last_scroll_pos:
break
last_scroll_pos = curr_scroll_pos