recherche

Maison  >  Questions et réponses  >  le corps du texte

Comment récupérer les données d'un site Web sans éléments HTML ?

Comment extraire les données du site Web suivant pour trouver des détails de cas spécifiques ?

Voici les étapes manuelles pour trouver les détails du cas :

  1. Accédez à https://www.claytoncountyga.gov/government/courts/court-case-inquiry/
  2. Il semble qu'il puisse y avoir un formulaire de chargement JavaScript avec un bouton/une entrée qui vous permet d'accéder à des détails plus approfondis sur le cas - "Recherche par nom" doit être sélectionné pour rechercher des cas par nom de famille - cliquez dessus
  3. Un nouvel écran apparaît alors dans le même élément de (2), permettant à l'utilisateur de sélectionner dans un tribunal déroulant (par exemple Magistrates Court) et de saisir un prénom et un nom (Smith John) via la saisie de texte libre.
  4. Cliquez sur "Soumettre" pour voir tous les cas
  5. Affichez les détails du cas en cliquant sur le numéro du cas sur l'une des lignes du tableau renseignée dans le même élément que lors de toutes les étapes précédentes - je souhaite extraire les données de cette page.

Étant donné que le formulaire interne semble être encapsulé (je suppose qu'il est implémenté en Javascript), je ne peux pas voir les éléments HTML qui sont rendus après la fourniture de chaque entrée. Comment automatiser avec Python ?

P粉819533564P粉819533564254 Il y a quelques jours475

répondre à tous(1)je répondrai

  • P粉458725040

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

    Le formulaire est contenu dans la méthode iframe 内。为了使 selenium 能够与其中的元素交互,我们首先必须使用 EC.frame_to_be_available_and_switch_to_it avec l'ID "Clayton County" pour y accéder.

    Ensuite, en utilisant Select(), nous pouvons sélectionner une option dans le menu déroulant.

    Dans la dernière page, nous obtenons toutes les URL des numéros de cas et les enregistrons dans case_numbers_urls afin que nous puissions les parcourir, charger chaque cas, obtenir les informations et les transmettre au cas suivant.

    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

    répondre
    0
  • Annulerrépondre