使用 Python 提取 Selenium 弹出数据

Selenium popup data extraction using Python

我是一名 Selenium 初学者,希望通过 Selenium 和 Python.

从弹出窗口 windows (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

感谢到目前为止的评论!

一旦我通过单击“详细信息”进入弹出窗口 window,我将尝试从具有 XPATH“/html/body/table[1]”的第一个 table 中提取所有内容。

很遗憾,以下代码无法正常工作。如果您能提供帮助,请告诉我,再次感谢您!

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)
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')

这是一个示例,用于处理转到选项卡的链接处理、关闭选项卡然后返回到默认选项卡。我不确定您希望如何获取这些值,您可以尝试搜索 table.

导入:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC