从解析的数据生成简单的RSS提要

时间:2013-06-11 01:04:53

标签: python django loops python-2.7 rss

Hello Stack Overflow我有一些代码可以抓取网站并解析小部分数据,如下所示;

System MA
user id =  2084
username =  XYZ90
selection =  pnq
decimal =  6.000
Percentage =  19.1176470588 %

System NA
user id =  2086
username =  pron1
selection =  abc
decimal =  13.000
Percentage =  13.1147540984 %

System M
user id =  1664
username =  Chrisod
selection =  pleader
decimal =  15.000
Percentage =  16.091954023 %

以上过滤器会打​​印上述内容:

if (deciaml > 5 and percentage > 10:
    print "system", system_acn
    print "user id = ",user_id
    print "username = ",username
    print "selection = ",selection
    print "decimal = ",decimal_delim   
    print "percentage = ,percentage_calc2,"%"

这一切都是从循环webscraper打印不同参数的结果。我希望能够做的是将每个导出为RSS。因此,上述内容将作为RSS提要中的三个RSS帖子存在。我已经研究了一些模块,比如django,这似乎是很多东西的工具包,不是专门的RSS,本质上我正在寻找最简单,最简单的RSS解决方案吗?对于合适的方法和/或模块的任何建议或意见将不胜感激。 亲切的问候AEA

1 个答案:

答案 0 :(得分:6)

我注意到您已将您的问题标记为与Django有关。如果您要基于此问题构建Django应用程序,那么syndication framework就是您想要使用的。但是,除非您计划使用Django的其他组件,例如数据库内容和/或模板语言,否则这不值得。

但是,您要求“最简单,最简单”的解决方案。我喜欢Django,它只需要几分钟就可以设置一个应用程序,所以对我来说,完成整个项目的最简单方法可能就是制作一个快速的Django应用程序。最简单的解决方案可能是手动创建Feed,不应该那么难;类似的东西:

inp="""System MA
user id =  2084
username =  XYZ90
selection =  pnq
decimal =  6.000
Percentage =  19.1176470588 %

System NA
user id =  2086
username =  pron1
selection =  abc
decimal =  13.000
Percentage =  13.1147540984 %

System M
user id =  1664
username =  Chrisod
selection =  pleader
decimal =  15.000
Percentage =  16.091954023 %"""

inp=inp.split('\n\n')

rss_start="""<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">

<channel>
  <title>Your title</title>
  <link>http://yoursite.com</link>
  <description>Your discription</description>
"""

rss_end="""</channel>

</rss> """

def description(item):
    return item

def title(item):
    return item.split('\n')[0]

def link(item):
    return 'http://mysite.com/' + item.split('\n')[0]

rss_items=[]
for counter, item in enumerate(inp):
    rss_items.append("""
  <item>
    <title>%s</title>
    <link>%s</link>
    <description>%s</description>
    <guid>counter</guid>
  </item>""" % (title(item),description(item),link(item)))

rss_output=rss_start+''.join(rss_items)+rss_end

您可能还想添加<pubDate>代码。并确保您的<guid>是唯一的。

注意:从w3schools.com复制rss模板