Wie entferne ich Daten von einer Website ohne HTML-Elemente?
P粉819533564
P粉819533564 2024-03-20 10:55:29
0
1
476

Wie kann ich Daten von der folgenden Website extrahieren, um spezifische Falldetails zu finden?

Hier sind die manuellen Schritte, um Falldetails zu finden:

  1. Navigieren Sie zu https://www.claytoncountyga.gov/ Government/courts/court-case-inquiry/
  2. Offenbar gibt es ein JavaScript-Ladeformular mit einer Schaltfläche/Eingabe, mit der Sie einen Drilldown zu weiteren Falldetails durchführen können – „Namensuche“ muss ausgewählt werden, um Fälle nach Nachnamen zu durchsuchen – klicken Sie darauf
  3. Ein neuer Bildschirm erscheint dann innerhalb desselben Elements von (2), sodass der Benutzer aus einem Dropdown-Menü (z. B. Amtsgericht) auswählen und über eine Freitexteingabe einen Vor- und Nachnamen (Smith John) eingeben kann.
  4. Klicken Sie auf „Senden“, um alle Fälle anzuzeigen
  5. Sehen Sie sich die Falldetails an, indem Sie auf die Fallnummer in einer der Zeilen in der Tabelle klicken, die im selben Element wie in allen vorherigen Schritten ausgefüllt ist – ich möchte die Daten von dieser Seite entfernen.

Da das innere Formular gekapselt zu sein scheint (ich vermute, dass es in Javascript implementiert ist), kann ich die HTML-Elemente, die nach jeder Eingabe gerendert werden, nicht sehen. Wie automatisiere ich mit Python?

P粉819533564
P粉819533564

Antworte allen(1)
P粉458725040

该表单包含在 ID 为“Clayton County”的 iframe 内。为了使 selenium 能够与其中的元素交互,我们首先必须使用 EC.frame_to_be_available_and_switch_to_it 方法切换到它。

然后使用 Select() 我们可以从下拉菜单中选择一个选项。

在最后一页中,我们获取所有案例编号 url 并将它们保存在 case_numbers_urls 中,以便我们可以循环它们,加载每个案例,获取信息并传递到下一个案例。

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import Select
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome(service=Service(chromedriver_path))
driver.get('https://www.claytoncountyga.gov/government/courts/court-case-inquiry/')

# page 1
wait = WebDriverWait(driver, 9)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "Clayton County")))
driver.find_element(By.XPATH, "//a[contains(.,'Name Search')]").click()

# page 2
dropdown = wait.until(EC.element_to_be_clickable((By.ID, "ctt")))
Select(dropdown).select_by_value('M')
lname = 'Smith'
fname = 'John'
driver.find_element(By.NAME, 'lname').send_keys(lname)
driver.find_element(By.NAME, 'fname').send_keys(fname)
driver.find_element(By.ID, 'btnSrch').click()

# page 3
case_numbers_urls = [c.get_attribute('href') for c in wait.until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, '#myTable a[href]:not([rel])')))]
for url in case_numbers_urls:
    driver.get(url)
    # do something
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage