我是一名 Selenium 初學者,希望通過 Selenium 和 Python 從彈出視窗 (HTML) 中提取資料。
這是網站: https ://www.drayage.com/directory/results.cfm?city=SAV&port=y&OceanCntrs=y&drvrs=y&showClicks=y
我正在嘗試單擊每個公司的“詳細資訊”彈出視窗并提取所有資料。這就是我目前所擁有的(抱歉,不多!)只需單擊第一個“詳細資訊”彈出視窗。
#import packages
from selenium import webdriver
#create filepath for correct chrome webdriver
path = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(path)
driver.get("https://www.drayage.com/directory/results.cfm?city=SAV&port=y&OceanCntrs=y&drvrs=y&showClicks=y")
driver.find_element_by_link_text("detail").click()
如果我可以為每個彈出視窗獲取一個文本塊,這甚至足以讓我通過分隔符分隔并在 SQL 中清理。
我的麻煩是如何提取所有這些以及如何不斷單擊每個“詳細資訊”彈出視窗。
非常感謝您的幫助!
更新 1
感謝您迄今為止的評論!
一旦我通過單擊“詳細資訊”進入彈出視窗,我將嘗試從第一個具有 XPATH“/html/body/table[1]”的表中提取所有內容。
不幸的是,下面的代碼不起作用。如果您能提供幫助,請告訴我,再次感謝您!
table = driver.find_element_by_xpath("/html/body/table[1]")
for i in driver.find_elements_by_xpath("/html/body/table[1]/tbody"):
data = [table.text for table in i.find_elements_by_xpath(".//*[self::td]")]
print(data)
uj5u.com熱心網友回復:
wait=WebDriverWait(driver,10)
driver.get("https://www.drayage.com/directory/results.cfm?city=SAV&port=y&OceanCntrs=y&drvrs=y&showClicks=y")
trs=wait.until(EC.visibility_of_all_elements_located((By.XPATH,"//html/body/table/tbody/tr/td/table[1]//tr[position()>2]")))
window_before = driver.window_handles[0]
for tr in trs:
try:
detail=tr.find_element(By.XPATH,".//a[contains(.,'detail')]")
detail.click()
#Handle the tab switch
window_after = driver.window_handles[1]
driver.switch_to.window(window_after)
#Do what you want here.
driver.close()
driver.switch_to.window(window_before)
except:
print('No detail')
這是一個示例,通過鏈接處理轉到選項卡,關閉選項卡,然后回傳默認選項卡。我不確定您希望如何輸出這些值,您可以嘗試搜索該表。
進口:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/430357.html
上一篇:如何在Repl.it上使用硒?
