Warum kann ich nicht alle Daten aus einer AG -Gittertabelle mit Selen kriechen, obwohl ich Scrollleft verwendet habe, umPython

Python-Programme
Anonymous
 Warum kann ich nicht alle Daten aus einer AG -Gittertabelle mit Selen kriechen, obwohl ich Scrollleft verwendet habe, um

Post by Anonymous »

Da ich neu im Selen -Tool bin, ist die Tabelle, aus der ich Daten kriechen möchte, ein AG -Netz, das zu Problemen führt, die beim Versuch, Daten aus jedem Zellwert "Gridcell" aus der Zeile zu kriechen. Ich konnte nur Daten kriechen, die auf den intitiellen Bildschirm gerendert wurden, und ich war nicht in der Lage, das, was im Recht ist, zu kriechen. Ich habe versucht, Scrollleft zu verwenden, um horizontal das Scrollen zu simulieren, aber es hat immer noch nicht funktioniert. Irgendwelche Ideen ?? < /p>
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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post