【问题标题】:Get text from div using Selenium使用 Selenium 从 div 获取文本
【发布时间】:2018-07-19 03:14:02
【问题描述】:

我正在使用 Selenium 和 Python 从页面中提取信息

这是我要从中提取的 div:

<div class="_2v66">5</div>

我想提取值“5”

这是我写的 Python:

element = browser.find_elements_by_class_name('_2v66').getText

print('Views:')
print(element)

当我运行此脚本时,我收到以下消息:

Traceback (most recent call last):
  File "<string>", line 95, in <module>
AttributeError: 'list' object has no attribute 'getText'
[Finished in 15.478s]

解决办法:

虽然我原本以为 div 类是唯一的,但仔细查看页面后发现它不是唯一的 div,因此解决方法如下:

browser.get(('https://www.facebook.com/example_page_1/insights/?section=navVideos'))

browser.implicitly_wait(60)

# find_elements_by_class_name - Returns the div in which the metrics are found
elements = browser.find_elements_by_class_name('_2v66')

for e in elements:
    print(e.text)

browser.implicitly_wait 对于允许页面加载至关重要。我收到的关于不存在的对象的错误就是因为这个。

【问题讨论】:

    标签: python python-3.x selenium


    【解决方案1】:

    只使用.text

    element = browser.find_element_by_class_name('_2v66').text
    

    如果有多个元素,则必须遍历它们。

    elements = browser.find_elements_by_class_name('_2v66')
    for e in elements:
        print(e.text)
    

    【讨论】:

    • 它仍然给我"文件"", line 94, in AttributeError: 'list' object has no attribute 'text'"
    • 检查这两个语句,如果你使用find_elements它返回一个列表而find_element将返回单个元素
    • 它仍然给我一个错误说“无法定位元素”
    【解决方案2】:

    根据您提供的 HTML 来提取文本 5,而不是使用 find_elements* 您需要使用 find_element您可以使用以下解决方案:

    element = browser.find_element_by_class_name('_2v66').text
    print(element)
    

    注意A:Selenium-Python 客户端没有getText 而是text 的方法。

    注意 B:您必须确保这个特定的 &lt;div&gt; 标记可以通过 class 属性 _2v66 唯一标识。。 p>

    【讨论】:

      猜你喜欢
      • 2020-05-25
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-06
      • 2020-01-16
      相关资源
      最近更新 更多