Python / Selenium - 无法打印所有段落的文本内容

时间:2015-10-02 16:44:06

标签: python selenium pycharm

新手在这里。我正在尝试打印网站上每个'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'

我做错了什么,解决方案是什么?谢谢!

3 个答案:

答案 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;只返回第一个出现的元素对象,所以你不需要遍历,可以调用直接方法来获取内容。