如何从以下网站抓取数据以查找特定案例详细信息?
以下是查找案例详细信息的手动步骤:
因为内部表单似乎是封装的(我猜测是用 Javascript 实现的),所以我看不到提供每个输入后呈现的 HTML 元素。我如何使用 Python 实现自动化?
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