Question

I have this 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() 

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.

Was it helpful?

Solution

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

for element in selector:
    print element.text_content()

OTHER TIPS

What about

for e in selector:
    print e.text_content()

?

I would expect you want a for loop like:

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

for selector in selectors: 
    print selector.text_content()
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top