Python Iterator Help + lxml

1

У меня есть этот script -

import lxml
from lxml.cssselect import CSSSelector
from lxml.etree import fromstring
from lxml.html import parse



website = parse('http://example.com').getroot()


selector = website.cssselect('.name')


for i in range(0,18): 
    print selector[i].text_content() 

Как вы можете видеть, цикл for останавливается после нескольких раз, которые я задал заранее. Я хочу, чтобы цикл for остановился только после того, как он напечатал все.

  • 0
    Спасибо всем, что ответили ... Также просто заметил, что я поставил сайт как xxx.com.
  • 0
    Кстати, вам не нужно импортировать CSSSelect , потому что вы используете метод cssselect в корневом cssselect .
Теги:
for-loop
iterator
lxml

3 ответа

5
Лучший ответ

Метод CSSSelector.cssselect() возвращает итерабельность, поэтому вы можете просто сделать:

for element in selector:
    print element.text_content()
  • 0
    +1, опереди меня на секунду.
  • 0
    Если это итеративно, то почему я получаю «TypeError: объект CSSSelector 'не итерируемый», когда я пытаюсь повторить его? редактировать: я забыл сделать часть "getroot"
2

Я бы ожидал, что вам нужен цикл for, например:

selectors = website.cssselect('.name , .name, .desc')

for selector in selectors: 
    print selector.text_content()
2

Что насчет

for e in selector:
    print e.text_content()

?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню