2015-10-02 1 views
0

Новичок здесь. Я пытаюсь напечатать весь текст, содержащийся в каждом теге «p» на веб-сайте. Это код, который не работает:Python/Selenium - невозможно распечатать текст содержимого всех абзацев

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

Большое спасибо за щедрую помощь всем! Это мой первый вопрос. Большой! – skeitel

ответ

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

Прочитайте ошибку снова:

AttributeError: 'list' object has no attribute 'text'

метод find_element сек _by_css_selector() возвращает список веб-элементов, то Вам придется перебрать этот список, чтобы. напечатайте .text каждого из них.

0

Selenium WebDriver функция «find_elements_by_css_selector» возвращает объекты (список объектов) все вхождения элемента на странице, так что вам нужно пройти по одному и напечатать все, «р» тег содержание.

Точно так же «find_element_by_css_selector» возвращает только первый элемент элемента вхождения, поэтому вам не нужно проходить, может вызывать прямой метод для получения контента.

Смежные вопросы