selenium - webcrawler- find_elements_by_css_selector(webelement).text 不起作用但需要一个迭代器为什么?

问题描述

正如问题所暗示的那样,为什么下面的错误代码不起作用,但正确的代码会起作用?

它们本质上不是一回事吗?我环顾四周,看到了解释python本机列表有效但在这种情况下selenium创建的对象列表不起作用的帖子

但我并没有真正理解它的本质,请任何人用简单的英语为新手程序员进一步详细说明

错误代码

mainText = driver.find_elements_by_css_selector(
    'div.post_content.clearfix > p').text
    print(mainContentDetail)

列表没有属性文本

正确的代码

mainText = driver.find_elements_by_css_selector(
    'div.post_content.clearfix > p')
for mainContentDetail in mainText:
    print(mainContentDetail.text)

解决方法

当您在下面使用时,您会尝试使用 css 选择器与 div.post_content.clearfix > p 匹配的元素列表。

driver.find_elements_by_css_selector(
    'div.post_content.clearfix > p')

当你在下面写的时候,你试图从多个元素中获取文本。但是 text 方法可以获取与单个元素关联的文本。当您尝试使用 text 方法从多个元素获取 Text 时,它会引发错误。

driver.find_elements_by_css_selector(
    'div.post_content.clearfix > p').text

在下面的代码中,您将列表元素添加到名为 mainText 的列表中,并且您正在遍历 mainText 列表中的每个元素,然后使用 text 方法从每个元素中获取文本。因此它有效。

mainText = driver.find_elements_by_css_selector(
    'div.post_content.clearfix > p')
for mainContentDetail in mainText:
    print(mainContentDetail.text)