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