我正在尝试编写一个利用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()
答案 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项中的位置(在本例中为标题)。