1

我想使用提要解析器来操作包含经常更新(随时间)内容的提要。目标是显示更新提要的所有内容。

import feedparser
d = feedparser.parse("some URL")

print "Information of user" 
i = range(10)

for i in d:
    print d.entries[i].summary 

print " " 

由于解析数据是列表,并且列表不接受字符串作为索引,因此显示错误

喜欢:

File "F:\JavaWorkspace\Test\src\rss_parse.py", line 18, in <module>
print d.entries[i].summary 
TypeError: list indices must be integers

那我怎样才能得到所有的内容呢?谁能告诉我一些关于这个问题的信息?提前致谢!

4

6 回答 6

4
for i in range(10):
    print d.entries[i].summary
于 2010-02-15T12:35:45.997 回答
4

i不是整数。我想i已经是提要的一个条目,但最好重命名它:

尝试:

for entry in d.entries:
  print entry.summary

如果你想要前 10 个条目,你必须这样做:

try:
  for i in range(10):
    print d.entries[i].summary
except IndexError:
  pass
于 2010-02-15T12:34:44.520 回答
1
import feedparser
from StringIO import StringIO
d = feedparser.parse("some URL")
buff = StringIO()
print >>buff, "Information of user" 

for i,e in enumerate(d.entries):
    print >>buff, i, e.summary 

print >>buff," "
print buff

如果您需要索引,我建议还使用字符串缓冲区对大字符串进行 I/O 操作。

于 2010-02-15T13:18:59.710 回答
1

对于所有条目,请:

import feedparser
d = feedparser.parse("some URL")

print "Information of user" 

for i in range(len(d['entries'])):
    print d.entries[i].summary 

print " "
于 2010-02-15T12:39:15.493 回答
1

您首先将整数列表分配给 i ( i = range(10)),然后丢失对该列表的引用。你确定你不是这个意思:

r = range(10)

for i in r:

或者简单地说:

for i in range(10):
于 2010-02-15T12:35:29.063 回答
0

假设您要打印列表的前 10 个元素(如果有 10 个或更多),或者它包含的其他元素。Felix 已经提出了一个带有异常管理的可行解决方案。您也可以使用如下所示的 itertools。

import feedparser
d = feedparser.parse('http://feedparser.org/docs/examples/atom10.xml')

from itertools import islice

for elt in islice(d.entries, 1, 10):
    print elt.summary

islice 的好处在于,如果您想访问从 3 到 10(一个切片)的元素,它也很容易工作。只需将 1 替换为 3。如果您只想说偶数元素等,它也适用于 step。

于 2010-02-15T13:30:31.460 回答