微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。