gpt4 book ai didi

python - Selenium 的 Xpath 嵌套括号问题(使用 Python)

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:47 25 4
gpt4 key购买 nike

我正在尝试使用 Selenium 和 xpaths 获取一些数据。

以下 xpath 工作正常:

print sel.get_attribute("xpath=(//*[@id='course_list']/*[@class='series'])[4]//*[@class='series_links']//a/@href")

并返回 4 个匹配的 URL。到目前为止一切顺利。

问题是我想编写一个 xpath 来单独定位每个 URL。

使用 Firefox xpath 检查器插件,我已经设法确认以下代码完全符合我的需要:

((//*[@id='course_list']/*[@class='series'])[4]//*[@class='series_links']//a/@href)[1]

但是尽管在 Firefox xpath 检查器中工作,我似乎无法让它在 Selenium 中工作。

每当我尝试执行时:

print sel.get_attribute("xpath=((//*[@id='course_list']/*[@class='series'])[4]//*[@class='series_links']//a/@href)[1]")

我收到以下错误:

Exception: ERROR: Invalid xpath [2]: ((//*[@id='course_list']/*[@class='series'])[4]//*[@class='series_links']//a

不知道这里发生了什么。我是犯了一个简单的错误,还是 Selenium xpath 不像 FF xpath 检查器那样支持嵌套括号?

任何想法都将不胜感激,因为我已经为此工作了几个小时,但似乎无法让它发挥作用:(

最佳答案

再次强调,这不是您问题的答案。但是,我从来没有像这样使用 xpaths。如果网页编写者足够聪明,可以使用类,那么他也足够聪明,可以更改网页的结构并保留这些类。

from selenium import webdriver
driver = webdriver.Chrome()

series = driver.find_element_by_class_name("series")
series_links = [i.get_attribute('href') for i in series.find_elements_by_class_name("series_links")]

driver.quit() # call this when you're done using the webdriver.

关于python - Selenium 的 Xpath 嵌套括号问题(使用 Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12447111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com