python - 使用 Selenium 从没有 ID 或类的列表中抓取文本

标签 python python-3.x selenium selenium-webdriver web-scraping

我不明白为什么当我肯定使用正确的 Xpath 时,我试图从中提取文本的列表返回空白。这是我的代码:

driver = webdriver.Firefox()
driver.get("https://www.omegawatches.com/watch-omega-specialities-first-omega-wrist-chronograph-51652483004001")
betweenLugs = driver.find_elements(By.XPATH, "/html/body/div[2]/main/div[3]/div/div/div[2]/div/div[2]/div[3]/div/ul/li[1]")])
print(betweenLugs.text)

这应该获取第一个列表项和度量

Between lugs: 20 mm 

我也尝试过其他方法,但是 Xpath 没有接受它的事实告诉我出了点问题,不管我怎么做,我都做不到提取列表中的文本。有谁知道我做错了什么?这是我第一次遇到这个问题。

最佳答案

xpath 错误。它在 /div[2] 中失败,它不匹配任何内容。这是您不应使用绝对路径的示例。

该节有id属性,使用它

betweenLugs = driver.find_elements(By.XPATH, "//*[@id='product-info-data-5bea7fa7406d7']/ul/li[1]")[0]

您可能还想添加一些等待加载

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

betweenLugs = WebDriverWait(driver, 10).until(expected_conditions.visibility_of_element_located((By.XPATH, "//*[@id='product-info-data-5bea7fa7406d7']/ul/li[1]")))

关于python - 使用 Selenium 从没有 ID 或类的列表中抓取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53280886/

相关文章:

python - 为Python脚本提供远程shell

python - 对对象列表进行排序,TypeError : unorderable types

django - Rest Framework 序列化程序方法字段

java - Selenium 网络驱动程序 : Java: NoSuchElementException: Unable to locate element: {"method" :"xpath" ,"selector" :"//div[@id=' manage_area']/ul/li/div[2]"}

python - 元素在 (x,y.5) 点不可点击,因为另一个元素遮住了它

javascript - Selenium JavaScript 与 Mocha beforeEach 为每个测试创建新的浏览器实例

python - Python 属性如何工作?

python - .anaconda 文件夹占用太多空间

python - 从 Kubernetes pod 将大文件上传到 Google Storage GCE

python - 我可以将一个函数和不同数量的参数传递给另一个函数吗?