如何在没有HTML元素的情况下从网站上进行数据爬取?
P粉819533564
P粉819533564 2024-03-20 10:55:29
0
1
495

如何从以下网站抓取数据以查找特定案例详细信息?

以下是查找案例详细信息的手动步骤:

  1. 导航至 https://www.claytoncountyga.gov/government/courts/court-case-inquiry/
  2. 似乎可能有一个带有按钮/输入的 JavaScript 加载表单,可让您进一步了解案例详细信息 - 需要选择“姓名搜索”以按姓氏搜索案例 - 单击它
  3. 然后,在 (2) 的同一元素中会出现一个新屏幕,允许用户从下拉法院(例如治安法院)中进行选择,并通过自由格式文本输入来输入姓氏和名字(Smith John)。
  4. 点击“提交”即可查看所有案例
  5. 点击表中与所有先前步骤相同的元素中填充的行之一上的案例编号,即可查看案例详细信息 - 我想从此页面抓取数据。

因为内部表单似乎是封装的(我猜测是用 Javascript 实现的),所以我看不到提供每个输入后呈现的 HTML 元素。我如何使用 Python 实现自动化?

P粉819533564
P粉819533564

全部回复(1)
P粉458725040

该表单包含在 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
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板