【问题标题】:Python/Selenium find elements with specific tags, classes, firstchild by xpathPython/Selenium 通过 xpath 查找具有特定标签、类、firstchild 的元素
【发布时间】:2021-02-04 04:41:56
【问题描述】:

我需要在列表中线性提取 HTML 页面的元素(保持真实的出现顺序)。单独挑选元素 - 在单独的列表中 - 看起来像这样:

date_select = driver.find_elements(By.XPATH, "//tr[@class='dayHeader']//h5")
time_select = driver.find_elements(By.XPATH, "//span[@class='col0Item']")
class_select = driver.find_elements(By.XPATH, "//span[@class='col1Item']")
duration_select = driver.find_elements(By.XPATH, "//span[@class='col4Item']")

我已经设法达到以下目标:

output = driver.find_elements_by_xpath('//*[contains(@class, 'dayHeader') or contains(@class, 'col0Item') or contains(@class, 'col1Item') or contains(@class, 'col4Item')]')

但问题是这一行有一个标签通配符,也没有考虑到 date_select 的第一个孩子。所以“输出”省去了很多不需要的元素。

如何才能将所有日期/时间/班级/持续时间线性输出到一行中?

【问题讨论】:

  • url页面或html文件是什么?
  • 没有登录就无法访问该页面,但由于这是一个语法问题,我觉得没有必要发布 HTML。

标签: python selenium xpath


【解决方案1】:

其实我已经找到了一条出路:

output = driver.find_elements_by_xpath("//tr[contains(@class,'dayHeader')]//h5|//span[contains(@class,'col0Item') or contains(@class,'col1Item') or contains(@class,'col4Item')]")

解决方案已在 Specifying multiple conditions in xpath 上进行了解释。 Pipe character in Python|(“管道”操作符)的解释

【讨论】:

    猜你喜欢
    • 2016-03-12
    • 1970-01-01
    • 2015-11-10
    • 2020-11-29
    • 2014-03-21
    • 2020-12-07
    • 1970-01-01
    • 2021-10-11
    • 1970-01-01
    相关资源
    最近更新 更多