views:

356

answers:

3

I have this script-

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



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


selector = website.cssselect('.name')


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

As you can see the for loop stops after a number of times that I set beforehand. I want the for loop to stop only after it has printed everything.

+2  A: 

What about

for e in selector:
    print e.text_content()

?

Bastien Léonard
+5  A: 

The CSSSelector.cssselect() method returns an iterable, so you can just do:

for element in selector:
    print element.text_content()
johnvey
+1, beat me to it by by a second.
Aaron Maenpaa
+2  A: 

I would expect you want a for loop like:

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

for selector in selectors: 
    print selector.text_content()
Aaron Maenpaa