我正在尝试修复一个Python脚本,该脚本从特定的RSS源中获取帖子并将其删除并将其输入到文本文件中。正如您在下面看到的,有两个主要的打印功能。一旦运行,只打印到shell,但它显示所有的帖子,这是我想要它做的。现在,第二部分是问题所在。它只会将RSS提要的 last 帖子打印成文本,而不是像第一个函数那样打印出来。我也尝试使用%s而不是新的打印行pr来制作第二个函数(f = open())。变量
如果有人能告诉我为什么脚本不会将RSS提要的多个(最后一篇)帖子发布到文本中,但是shell中的全部内容,以及我需要修改它的哪些修改,我会非常感激它:)
以下是代码:
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"
答案 0 :(得分:2)
您的print >>f
位于for
循环之后,因此它们会运行一次,并对上次保存到title
,description
和{{的数据进行操作1}}。
您应该在str
循环之前打开文件,然后将for
行放在循环中。
print >>f
答案 1 :(得分:1)
您遍历所有帖子,将其属性分配给变量并打印到终端。
然后将变量(恰好包含最后一次赋值的结果)打印到文件中。所以你在这里得到一个帖子。
如果你想要不止一个,也需要迭代。