Python - 使用PyRSS2Gen生成RSS

时间:2016-03-30 20:52:10

标签: python xml module

我正在尝试编写一个利用urllib2解析HTML的程序,然后利用PyRSS2Gen以XML格式创建RSS提要。

我一直收到错误

  

Traceback(最近一次调用最后一次):文件“pythonproject.py”,第46行,   在       get_rss()文件“pythonproject.py”,第43行,在get_rss中       rss.write_xml(open(“cssnews.rss.xml”,“w”))文件“build / lib / PyRSS2Gen.py”,第34行,在write_xml中       self.publish(handler)文件“build / lib / PyRSS2Gen.py”,第380行,在发布中       item.publish(handler)文件“build / lib / PyRSS2Gen.py”,第427行,发布       _opt_element(handler,“title”,self.title)_opt_element中的文件“build / lib / PyRSS2Gen.py”,第58行       _element(handler,name,obj)文件“build / lib / PyRSS2Gen.py”,第53行,在_element中       obj.publish(handler)AttributeError:'builtin_function_or_method'对象没有属性'publish'

试图运行它。

根据我的发现,其他用户在尝试为XML创建新标记时遇到了此问题,但我尝试使用PyRSS2Gen提供的默认标记。检查PyRSS2Gen.py文件显示我正在使用的write_xml()命令,错误是我如何通过从列表中弹出它们来为rss项目分配值?

def get_rss():
    sys.path.append('build/lib')
    from PyRSS2Gen import RSS2, RSSItem

    rss = RSS2(
        title = 'Python RSS Creator',
        link = 'technews.acm.org',
        description = 'Creates RSS out of HTML',
        items = [],
    )

    for x in range(0, len(rssTitles)):
        rss.items.append(RSSItem(
            title = rssTitles.pop,
            link = rssLinks.pop,
            description = rssDesc.pop,
        ))

    rss.write_xml(open("cssnews.rss.xml", "w"))

# 5 - Call function
get_rss()

2 个答案:

答案 0 :(得分:0)

我最后写了一个文件,就像这样;

news = open("news.rss.xml", "w")
news.write("<?xml version=\"1.0\" ?>")
news.write("\n")
news.write("<rss xmlns:atom=\"http://www.w3.org/2005/Atom\" version=\"2.0\">")
news.write("\n")
news.write("<channel>")
news.write("\n")

答案 1 :(得分:0)

PyRSS2Gen依赖于其输入是字符串还是具有执行所有必要转换的publish方法。

在这种情况下,您错过了在rssTitles上调用pop方法的机会,从而为您提供了一个函数而不是字符串。在所有的热门提示之后添加()应该会为您提供一个可用的程序。

请注意,当周围还有其他非固定项(例如字节字符串)时,也会出现类似的错误; AttributeError行为您提供了有关进入RSS项的对象的提示,并且回溯指示了RSS项中的位置(在本例中为标题)。