suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Wie entferne ich Daten von einer Website ohne HTML-Elemente?

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粉819533564P粉819533564289 Tage vor507

Antworte allen(1)Ich werde antworten

  • P粉458725040

    P粉4587250402024-03-21 09:39:39

    该表单包含在 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

    Antwort
    0
  • StornierenAntwort