Rumah > Soal Jawab > teks badan
Bagaimana untuk mengikis data daripada tapak web berikut untuk mencari butiran kes tertentu?
Berikut adalah langkah manual untuk mencari butiran kes:
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粉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