python-3.x 使用Selenium从div获取文本

qcbq4gxm  于 2022-11-19  发布在  Python
关注(0)|答案(2)|浏览(176)

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

qnakjoqk

qnakjoqk1#

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

mfuanj7w2#

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

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

注A:Selenium-Python客户端没有任何方法getText,而是text
备注B:您必须确保可以通过 class 属性**_2v66**唯一标识此特定<div>标记。

相关问题