使用python提取Selenium中的表数据(单位列)

luaexgnf  于 2023-01-02  发布在  Python
关注(0)|答案(1)|浏览(130)

有人能帮我一下吗
我试图从这个网站的表中单独提取单位https://opennem.org.au/facility/au/NEM/DEIBDL/?range=all&interval=1y
这是我试过的,我只能提取表中的第一个。我需要表中的所有单位。

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait

driver = webdriver.Chrome('C:\\chromedriver\\chromedriver108.exe')
driver.get("https://opennem.org.au/facility/au/NEM/DEIBDL/?range=all&interval=1y")
driver.maximize_window()
toolTip = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.XPATH, "//td[@class='unit-name has-tooltip']"))).text
print(toolTip)

我期望的输出是
BDL01和BDL02
谢谢

bqujaahr

bqujaahr1#

由于您正在查找元素文本,因此需要等待元素可见。
此外,由于需要从中提取文本的元素有多个,因此需要使用visibility_of_all_elements_located预期条件。
这将返回一个需要迭代提取文本的web元素的列表
下面的代码是有效的:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

options = Options()
options.add_argument("start-maximized")

webdriver_service = Service('C:\webdrivers\chromedriver.exe')
driver = webdriver.Chrome(service=webdriver_service, options=options)

url = 'https://opennem.org.au/facility/au/NEM/DEIBDL/?range=all&interval=1y'
driver.get(url)
wait = WebDriverWait(driver, 20)
#
elements = wait.until(EC.visibility_of_all_elements_located((By.XPATH, "//td[@class='unit-name has-tooltip']")))
for element in elements:
    print(element.text)

输出为:

BDL01
BDL02

相关问题