cari

Rumah  >  Soal Jawab  >  teks badan

Bagaimana untuk mengikis data dari tapak web tanpa elemen HTML?

Bagaimana untuk mengikis data daripada tapak web berikut untuk mencari butiran kes tertentu?

Berikut adalah langkah manual untuk mencari butiran kes:

  1. Navigasi ke https://www.claytoncountyga.gov/government/courts/court-case-inquiry/
  2. Nampaknya mungkin terdapat borang pemuatan JavaScript dengan butang/input yang membolehkan anda menelusuri butiran kes lanjut - "Carian Nama" perlu dipilih untuk mencari kes mengikut nama keluarga - klik padanya
  3. Skrin baharu kemudian muncul dalam elemen yang sama iaitu (2), membenarkan pengguna memilih daripada mahkamah lungsur (mis. Mahkamah Majistret) dan memasukkan nama pertama dan terakhir (Smith John) melalui input teks bentuk bebas.
  4. Klik "Serah" untuk melihat semua kes
  5. Lihat butiran kes dengan mengklik pada nombor kes pada salah satu baris dalam jadual yang diisikan dalam elemen yang sama seperti dalam semua langkah sebelumnya - Saya ingin mengikis data dari halaman ini.

Oleh kerana bentuk dalaman nampaknya dirangkumkan (saya rasa dilaksanakan dalam Javascript), saya tidak dapat melihat elemen HTML yang diberikan selepas setiap input disediakan. Bagaimanakah saya mengautomasikan menggunakan Python?

P粉819533564P粉819533564254 hari yang lalu474

membalas semua(1)saya akan balas

  • P粉458725040

    P粉4587250402024-03-21 09:39:39

    Borang tersebut terkandung dalam kaedah iframe 内。为了使 selenium 能够与其中的元素交互,我们首先必须使用 EC.frame_to_be_available_and_switch_to_it dengan ID "Kaunti Clayton" untuk beralih kepadanya.

    Kemudian menggunakan Select() kita boleh memilih pilihan daripada menu lungsur.

    Di halaman terakhir, kami mendapat semua url nombor kes dan menyimpannya dalam case_numbers_urls supaya kami boleh mengulanginya, memuatkan setiap kes, mendapatkan maklumat dan menyampaikannya ke kes seterusnya.

    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

    balas
    0
  • Batalbalas