HTML 要素を使用せずに Web サイトからデータをスクレイピングするにはどうすればよいですか?
P粉819533564
P粉819533564 2024-03-20 10:55:29
0
1
468

次の Web サイトからデータを収集して、特定のケースの詳細を見つけるにはどうすればよいですか?

ケースの詳細を手動で検索する手順は次のとおりです:

  1. https://www.claytoncountyga.gov/government/courts/court-case-inquiry/
  2. に移動します。
  3. ケースの詳細をさらにドリルダウンできるボタン/入力を備えた JavaScript 読み込みフォームがあるようです - ケースを姓で検索するには「名前検索」を選択する必要があります - それをクリックしてください
  4. 次に、(2) と同じ要素に新しい画面が表示され、ユーザーがドロップダウン裁判所 (例: 治安判事裁判所) から選択し、自由形式のテキスト入力で姓名 (Smith John) を入力できるようになります。 。
  5. 「送信」をクリックしてすべてのケースを表示します
  6. ケースの詳細は、これまでのすべての手順と同様に、テーブル内の同じ要素に入力されている行の 1 つでケース番号をクリックすると表示できます。このページからデータを取得したいと考えています。

内部フォームはカプセル化されているように見えるため (おそらく JavaScript で実装されていると思います)、各入力が提供された後にレンダリングされる HTML 要素は表示されません。 Python を使用して自動化するにはどうすればよいですか?

P粉819533564
P粉819533564

全員に返信(1)
P粉458725040

フォームは、ID「Clayton County」の iframe 内に含まれています。 Selenium がその中の要素と対話できるようにするには、まず EC.frame_to_be_available_and_switch_to_it メソッドを使用して Selenium に切り替える必要があります。

次に、Select() を使用して、ドロップダウン メニューからオプションを選択できます。

最後のページでは、すべてのケース番号の URL を取得して case_numbers_urls に保存します。これにより、それらをループして各ケースをロードし、情報を取得して次のケースに渡すことができます。

Selenium インポート Web ドライバーから
selenium.webdriver.common.by からインポート
selenium.webdriver.support.ui からインポートを選択します
selenium.webdriver.chrome.service インポート サービスから
selenium.webdriver.support.ui から WebDriverWait をインポート
selenium.webdriver.support から、expected_conditions を EC としてインポートします

driver = webdriver.Chrome(service=Service(chromedriver_path))
driver.get('https://www.claytoncountyga.gov/government/courts/court-case-inquiry/')

# ページ1
wait = WebDriverWait(ドライバー, 9)
wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "クレイトン郡")))
driver.find_element(By.XPATH, "//a[contains(.,'名前検索')]").click()

# 2ページ
ドロップダウン = wait.until(EC.element_to_be_clickable((By.ID, "ctt")))
Select(ドロップダウン).select_by_value('M')
lname = 'スミス'
fname = 'ジョン'
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()

# 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])')))]
case_numbers_urls の URL の場合:
    driver.get(url)
    #何かをする
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート