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

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 に答える
4
for i in range(10):
    print d.entries[i].summary
于 2010-02-15T12:35:45.997 に答える
1

最初に整数のリストをi()に割り当ててi = range(10)から、このリストへの参照を失います。意味がなかったのですか?

r = range(10)

for i in r:

または単に:

for i in range(10):
于 2010-02-15T12:35:29.063 に答える
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
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 に答える
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に置き換えるだけです。要素などだけを言いたい場合は、ステップでも機能します。

于 2010-02-15T13:30:31.460 に答える