无法使用Selenium从HTML中获取元素

2024-10-02 02:43:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从以下HTML中获取这些元素的文本:

<div class="panel_descripcion">
        <span itemprop="description">
                <ul>
                    <li><span style="color: #666666;" class="texto7">Blah blah</span>
                    </li>
                </ul>
        </span>
        <span itemprop="description">
                <ul>
                    <li><span style="color: #666666;" class="texto7">Blah blah</span>
                    </li>
                </ul>
        </span>
        <span itemprop="description">
                <ul>
                    <li><span style="color: #666666;" class="texto7">Blah blah</span>
                    </li>
                </ul>
        </span>
</div>

目前,我有以下代码,但无法使其工作,找到了元素,但检索到的文本为空:

description_list = dr.find_elements_by_css_selector("div.panel_descripcion > span > span")
for description_elem in description_list:
    description = description_elem.text

我已经确定了在HTML的其余部分中没有其他div具有名为panel_description的类。你知道吗

编辑

这是我一直在使用的代码,而不是以前的一个,我复制了错误的一个,虽然我不知道它是不正确的!你知道吗

description_list = dr.find_elements_by_css_selector("div.panel_descripcion > span")
    for description_elem in description_list:
        description = description_elem.find_element_by_css_selector("span").text

提前谢谢


Tags: divstylelidescriptionullistclasscolor
3条回答

您可以使用jquery选择器,比如$(".panel_descripcion span:eq(1) li") 它将在第二个span>;li中给出文本

您使用了错误的选择器,请尝试使用div.panel_descripcion > span span。你知道吗

这和您的代码之间的区别是我删除了选择子标记的>,并且第二个span不是第一个span的子级。 您的标记是这样的:div>;span>;ul>;li>;span,您的代码正在搜索不存在的div>;span>;span。你知道吗

有关cssselector的详细信息,请参见here。你知道吗

如果我没弄错的话,你可以这么做:

description_list = dr.find_element_by_css_selector('.panel_descripcion .texto7');

但是,如果你尝试使用的站点发生了一些变化,并且我认为你用来获取所需元素的css选择器似乎不正确,那么它将是不灵活的。你知道吗

div.panel_descripcion > span > span

这将查找此html格式的元素

<div class="panel_descripcion">
    <span itemprop="description">
        <span style="color: #666666;" class="texto7">Blah blah</span>
    </span>
    <span itemprop="description">
        <span style="color: #666666;" class="texto7">Blah blah</span>
    </span>
    <span itemprop="description">
        <span style="color: #666666;" class="texto7">Blah blah</span>
    </span>
</div>

相关问题 更多 >

    热门问题