如何提取<ul>下的所有<li>元素

dee*_*esh 0 python selenium xpath css-selectors webdriverwait

我想提取我尝试过的所有<li>元素文本<ul>

elem = driver.find_elements_by_xpath(("//div[@class='left width50']/p/b/ul"))
len(elem)
Run Code Online (Sandbox Code Playgroud)

给出 '0' 或空列表。

这是 html 源代码

<div class="left width50">
                            <p><b>Features:</b></p>
                            <ul>
                                    <li>Easy spray application</li>
                                    <li>Excellent bonding properties</li>
                                    <li>Single package</li>
                                    <li>Mixed with clean potable water at job site</li>
                            </ul>
                        </div>
Run Code Online (Sandbox Code Playgroud)

这里是网站的链接

有什么建议怎么办?

Kau*_*hik 6

实际上,您正在尝试找到pandb标记之后的路径。看起来像这样。

<div class="left width50">
    <p><b>Features:<ul>
            <li>Easy spray application</li>
            <li>Excellent bonding properties</li>
            <li>Single package</li>
            <li>Mixed with clean potable water at job site</li>
    </ul></b></p>

</div>
Run Code Online (Sandbox Code Playgroud)

但是你的代码在 HTML 中是不同的。

所以你应该在没有pandb标签的情况下环顾四周。

以下是您可以从 chrome 获得的快速帮助。转到开发人员选项f12 key并导航到元素选项卡,然后右键单击要查找的元素并选择选择器值。

您可以在此处阅读有关查找元素的方法的更多信息

如果你想使用xPath这对你来说是正确的 xpath -//*[@id="borderForGrid"]/div[1]/ul

提取工艺

一旦你得到所有ul这将帮助你得到所有的li文本

all_li = all_ul_from_xpath.find_elements_by_tag_name("li")
for li in all_li:
    text = li.text
    print (text)
Run Code Online (Sandbox Code Playgroud)

工作代码供参考。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()
driver.get("http://www.carboline.com/products/")



elem = driver.find_element_by_xpath('//*[@id="borderForGrid"]/div[1]/ul')

all_li = elem.find_elements_by_tag_name("li")
for li in all_li:
    text = li.text
    print (text)
Run Code Online (Sandbox Code Playgroud)

输出

在此处输入图片说明

在此处输入图片说明