首页 > 解决方案 > Selenium Python 迭代 ol 中的 li 元素

问题描述

我需要使用 python 和 selenium 提取多个 li 元素的文本,所有这些元素都在 ol 元素内。清单是这样的:

/html/body/main/div/div/section/ol/li[3]/div/div/div[2]/div[1]/a[1]/h2
/html/body/main/div/div/section/ol/li[4]/div/div/div[2]/div[1]/a[1]/h2
/html/body/main/div/div/section/ol/li[5]/div/div/div[2]/div[1]/a[1]/h2
/html/body/main/div/div/section/ol/li[6]/div/div/div[2]/div[1]/a[1]/h2
...

到目前为止,我正在使用以下代码,但此代码仅显示一个元素,而不是整个列表。它有什么问题?谢谢!

articles_list=r'/html/body/main/div/div/section/ol'
articles_elements = driver.find_elements_by_xpath(articles_list)

for article in articles_elements:
    title = article.find_element_by_xpath('.//div/div/div[2]/div[1]/a[1]/h2').text
    print('Title:'+title)

标签: python-3.xseleniumselenium-webdriver

解决方案


我看到那个li标签有增量索引,比如[3]then[4]等等。

i = 3您可以通过最初声明然后以编程方式递增使用来查找每个 Web 元素。

a = 3
size_of_list  = driver.find_elements_by_xpath(f"/html/body/main/div/div/section/ol/li")
for i in range(size_of_list):
    title = driver.find_element_by_xpath(f"/html/body/main/div/div/section/ol/li[{a}]/div/div/div[2]/div[1]/a[1]/h2").text
    print('Title:', title)
    a = a +1

推荐阅读