新手在这里。我正在尝试打印网站上每个'p'标签中包含的所有文字。这是不起作用的代码:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('https://automatetheboringstuff.com/')
elem = browser.find_elements_by_css_selector('p')
print(elem.text)
我正在学习,所以我希望看到我正在抓的内容,所以我知道一切都很好,然后转向更高级的主题。老师说“所有网页元素都有”.text“方法,但是当我尝试打印时似乎不起作用。错误信息是:
C:\Python34\python.exe C:/Users/sk/PycharmProjects/test/temperase.py
Traceback (most recent call last):
File "C:/Users/sk/PycharmProjects/test/temperase.py", line 7, in <module>
print(elem.text)
AttributeError: 'list' object has no attribute 'text'
我做错了什么,解决方案是什么?谢谢!
答案 0 :(得分:2)
再次阅读错误:
AttributeError:'list'对象没有属性'text'
方法find_element s _by_css_selector()返回网页元素的列表。然后,您必须遍历该列表,以打印每个列表的.text。
答案 1 :(得分:1)
因为elem是一个列表。所以你应该尝试下面的源代码:
from selenium import webdriver
browser = webdriver.Firefox()
browser.get('https://automatetheboringstuff.com/')
elem = browser.find_elements_by_css_selector('p')
for el in elem:
print(el.text)
答案 2 :(得分:0)
Selenium webdriver&#34; find_elements_by_css_selector&#34;函数返回页面上所有出现元素的对象(对象列表),因此您需要逐个遍历并打印所有&#34; p&#34;标签内容。
同样的方式&#34; find_element_by_css_selector&#34;只返回第一个出现的元素对象,所以你不需要遍历,可以调用直接方法来获取内容。