【问题标题】:How to get text which is inside the span tag using selenium webdriver?如何使用 selenium webdriver 获取 span 标签内的文本?
【发布时间】:2021-03-22 10:13:42
【问题描述】:

我想获取跨度内的文本。但是,我无法实现它。文本在ul<li<span<a<span 内。我在 python 中使用 selenium。

下面是我试过的代码:

departmentCategoryContent = driver.find_elements_by_class_name('a-list-item')
departmentCategory = departmentCategoryContent.find_elements_by_tag_name('span')

在此之后,我只是迭代 departmentCategory 并使用 .text 打印文本,即

[ print(x.text) for x in departmentCategory ]

但是,这会产生错误:AttributeError: 'list' object has no attribute 'find_elements_by_tag_name'

谁能告诉我我做错了什么以及如何获取文本?

【问题讨论】:

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


    【解决方案1】:

    问题:

    据我了解,departmentCategoryContent 是一个列表,而不是单个WebElement,那么它就没有find_elements_by_tag_name() 方法。

    解决方案:

    您可以选择以下 2 种方式中的一种:

    1. 您首先需要为每个列表departmentCategoryContent,然后是find_elements_by_tag_name()

    2. 使用find_elements_by_css_selector():通过一条语句节省时间:

    departmentCategory = driver.find_elements_by_css_selector('.a-spacing-micro.apb-browse-refinements-indent-2 .a-list-item span')

    [ print(x.text) for x in departmentCategory ]

    在开发工具上测试:


    解释

    您的定位器.a-list-item span 将返回属于div.a-list-time 的所有span 标记。有 88 个项目包含不需要的标签。

    因此,您需要添加更具体的定位器来分隔其他 div。在这种情况下,我使用了更多的类。 .a-spacing-micro.apb-browse-refinements-indent-2

    【讨论】:

    • 我理解错误。但是现在应该如何获取文本。
    • 您可以检查比第一种更容易的第二种方法。
    • 它没有打印任何东西。
    • 能否提供网页链接?我想在打印或做其他事情之前确保定位器是正确的
    • 我更新了解释我做了什么的答案。希望对您有所帮助!
    【解决方案2】:

    你循环错了。您想要遍历“a-list-item”列表并找到一个作为该 webElement 子元素的 span 元素。试试这个:

    departmentCategoryContent = driver.find_elements_by_class_name('a-list-item')
    
    print(x.find_element_by_tag_name('span').text) for x in departmentCategoryContent
    

    请注意,第二个 dom 搜索是 find_element(不是 find_elements),它将返回单个 webElement,而不是列表。

    【讨论】:

    • 这个工作只需要在[]里面添加打印语句。 “a-list-item”类中有一些额外的内容。我尝试使用 'a-color-base a-link-normal' 类名来实现相同的效果,但它不打印任何内容。
    • 如果有效,请选择它作为答案。不过,听起来您的定位器上可能还有一些工作要做!
    • 多余的文字是什么意思?
    • 还有一些具有相同类名的元素。这也有效。谢谢
    猜你喜欢
    • 2019-05-20
    • 1970-01-01
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    相关资源
    最近更新 更多