【问题标题】:Python Iterator Help + lxmlPython 迭代器帮助 + lxml
【发布时间】:2010-10-24 06:07:48
【问题描述】:

我有这个脚本-

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 循环只有在打印完所有内容后才停止。

【问题讨论】:

  • 感谢大家的回答...还注意到我把网站设置为xxx.com。
  • 对了,你不需要导入CSSSelect,因为你在root上使用cssselect方法。

标签: python iterator for-loop lxml


【解决方案1】:

CSSSelector.cssselect() 方法返回一个可迭代对象,所以你可以这样做:

for element in selector:
    print element.text_content()

【讨论】:

  • 如果它是可迭代的,那么当我尝试迭代它时,为什么会出现“TypeError: 'CSSSelector' object is not iterable”?编辑:我忘了做“getroot”部分
【解决方案2】:

怎么样

for e in selector:
    print e.text_content()

?

【讨论】:

    【解决方案3】:

    我希望你想要一个像这样的 for 循环:

    selectors = website.cssselect('.name , .name, .desc')
    
    for selector in selectors: 
        print selector.text_content()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      • 2013-11-14
      • 2019-05-11
      • 2015-12-26
      • 1970-01-01
      • 1970-01-01
      • 2021-05-21
      相关资源
      最近更新 更多