使用Selenium从div获取文本

时间:2018-07-19 03:14:03

标签: python python-3.x selenium

我正在使用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对于加载页面至关重要。我收到的关于该对象不存在的错误是因为这个原因。

2 个答案:

答案 0 :(得分:3)

仅使用.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)

答案 1 :(得分:2)

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

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

注释A :Selenium-Python客户端没有像getText那样的方法,而只有text

注释B :您必须确保可以通过 class 属性 _2v66 唯一标识此特定<div>标签。