如何从以下网站抓取数据以查找特定案例详细信息?
以下是查找案例详细信息的手动步骤:
- 导航至 https://www.claytoncountyga.gov/government/courts/court-case-inquiry/
- 似乎可能有一个带有按钮/输入的 JavaScript 加载表单,可让您进一步了解案例详细信息 - 需要选择“姓名搜索”以按姓氏搜索案例 - 单击它
- 然后,在 (2) 的同一元素中会出现一个新屏幕,允许用户从下拉法院(例如治安法院)中进行选择,并通过自由格式文本输入来输入姓氏和名字(Smith John)。
- 点击“提交”即可查看所有案例
- 点击表中与所有先前步骤相同的元素中填充的行之一上的案例编号,即可查看案例详细信息 - 我想从此页面抓取数据。
因为内部表单似乎是封装的(我猜测是用 Javascript 实现的),所以我看不到提供每个输入后呈现的 HTML 元素。我如何使用 Python 实现自动化?
该表单包含在 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