2009-07-22 8 views
0

特定のRSSフィードから投稿を取り出し、それらを取り除き、テキストファイルに入力するPythonスクリプトを修正しようとしています。下にあるように、2つの主要な印刷機能があります。一度実行されたシェルには1つしか印刷されませんが、すべてのの投稿が表示されます。さて、第二の部分は問題がどこにあるのかです。 RSSフィードの最後ののポストを、最初の機能と同じように、全部ではなくテキストに出力します。私はまた、2番目の関数(f = open())を新しいprint-line prの代わりに最初の関数と同じ方法で%sで作成しようとしました。変数。なぜこのPythonスクリプトは最後のRSS投稿をファイルに読み込むだけですか?

RSSフィードの複数の(最後の)投稿をテキストに投稿しない理由を誰かが教えてもらえれば、シェル内のすべてのもの、そして修正する必要があるものは本当にそれを感謝:)ここ

はコードです:

import urllib 
import sys 
import xml.dom.minidom 

#The url of the feed 
address = 'http://www.vg.no/export/Alle/rdf.hbs?kat=nyheter' 

#Our actual xml document 
document = xml.dom.minidom.parse(urllib.urlopen(address)) 
for item in document.getElementsByTagName('item'): 
    title = item.getElementsByTagName('title')[0].firstChild.data 
    link = item.getElementsByTagName('link')[0].firstChild.data 
    description = item.getElementsByTagName('description')[0].firstChild.data 

    str = link.strip("http://go.vg.no/cgi-bin/go.cgi/rssart/") 
    print "\n" 
    print "------------------------------------------------------------------" 
    print '''"%s"\n\n%s\n\n(%s)''' % (title.encode('UTF8', 'replace'), 
              description.encode('UTF8','replace'), 
              str.encode('UTF8','replace')) 
    print "------------------------------------------------------------------" 
    print "\n" 

f = open('lawl.txt','w') 
print >>f, "----------------------Nyeste paa VG-------------------------------" 
print >>f, title.encode('UTF8','replace') 
print >>f, description.encode('UTF8','replace') 
print >>f, str.encode('UTF8','replace') 
print >>f, "------------------------------------------------------------------" 
print >>f, "\n" 

答えて

2

あなたprint >>fforループの後なので、一度に実行されている、とあなたが最後titleに保存されたデータを操作、description、およびstr

forループの前にファイルを開き、print >>f行をループの内側に配置する必要があります。

import urllib 
import sys 
import xml.dom.minidom 

#The url of the feed 
address = 'http://www.vg.no/export/Alle/rdf.hbs?kat=nyheter' 

f = open('lawl.txt','w') 

#Our actual xml document 
document = xml.dom.minidom.parse(urllib.urlopen(address)) 
for item in document.getElementsByTagName('item'): 
    title = item.getElementsByTagName('title')[0].firstChild.data 
    link = item.getElementsByTagName('link')[0].firstChild.data 
    description = item.getElementsByTagName('description')[0].firstChild.data 

    str = link.strip("http://go.vg.no/cgi-bin/go.cgi/rssart/") 
    print "\n" 
    print "------------------------------------------------------------------" 
    print '''"%s"\n\n%s\n\n(%s)''' % (title.encode('UTF8', 'replace'), 
              description.encode('UTF8','replace'), 
              str.encode('UTF8','replace')) 
    print "------------------------------------------------------------------" 
    print "\n" 

    print >>f, "----------------------Nyeste paa VG-------------------------------" 
    print >>f, title.encode('UTF8','replace') 
    print >>f, description.encode('UTF8','replace') 
    print >>f, str.encode('UTF8','replace') 
    print >>f, "------------------------------------------------------------------" 
    print >>f, "\n" 
1

すべての投稿を繰り返し、その属性を変数に割り当てて、端末に出力します。

次に、変数(最後の割り当ての結果を保持する)がファイルに出力されます。だからあなたはここに一つの投稿を得る。

複数の場合は繰り返しが必要です。

関連する問題