Maison > Questions et réponses > le corps du texte
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 :
É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粉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