Нажмите на ссылку № по системе воды (например, KS2000302), чтобы открыть детальную страницу < /li>
Извлечение информации из таблицы под названием Water System Contacts (например. Страницы системы водоснабжения используют один и тот же URL:
https://dww.kdhe.ks.gov/dww/jsp/watersystemdetail.jsp
, поэтому я не могу просто построить уникальные URL. Я попытался использовать селен для навигации и сбрасывания, но мой скрипт терпит неудачу с TimeoutException. < /P>
Вещи, которые я пробовал: < /p>
увидел открытый автоматический браузер, но он пришел и закрыт, не щелкнув все < /li>
Пробовал для Frames. "iframe"), но он вернулся 0 < /li>
< /ul>
Как я могу соскрести контактную информацию из систем водоснабжения округа, если все они используют один и тот же URL? Поле из каждой системы водоснабжения: < /p>
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import csv
import time
# --- set up Chrome ---
driver = webdriver.Chrome() # ← start without --headless while you test
driver.maximize_window()
url = ("https://dww.kdhe.ks.gov/DWW/JSP/WaterSystems.jsp?"
"PointOfContactType=none&RegulatingAgency=All&number=&name=&county=Anderson")
driver.get(url)
#
# The KDHE pages use a frameset: banner | sidebar | content.
# The content frame is usually the third one.
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it(2))
# (If that fails, try 1 or By.NAME("content"))
#
table = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//table[contains(@class,'Data')]"))
)
rows = driver.find_elements(By.XPATH, "//table[contains(@class,'Data')]/tbody/tr")[1:]
results = []
for i in range(len(rows)):
rows = driver.find_elements(By.XPATH, "//table[contains(@class,'Data')]/tbody/tr")[1:]
link = rows.find_element(By.TAG_NAME, "a")
ws_number = link.text.strip()
ws_name = rows.find_elements(By.TAG_NAME, "td")[1].text.strip()
print(f"\n
link.click()
# after clicking we’re still inside the same frame
WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, "//td[contains(text(),'Alternate State No.')]"))
)
alt_state_no = driver.find_element(
By.XPATH,
"//td[contains(text(),'Alternate State No.')]/following-sibling::td"
).text.strip()
print(f" → Alt State No.: {alt_state_no}")
results.append([ws_name, ws_number, alt_state_no])
driver.back()
time.sleep(1) # brief pause so the table reloads
# save CSV
with open("anderson_alternate_state_numbers.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["Water System Name", "System No.", "Alternate State No."])
writer.writerows(results)
print("\n
driver.quit()
Подробнее здесь: https://stackoverflow.com/questions/796 ... namic-site