Comment récupérer les données d'un site Web sans éléments HTML ?
P粉819533564
P粉819533564 2024-03-20 10:55:29
0
1
499

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粉819533564
P粉819533564

répondre à tous(1)
P粉458725040

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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal