我试图用RSS提要中的xml文件集合解析一个目录。我有一个类似的代码,用于另一个运行良好的目录,所以我无法解决问题。我想返回项目,以便将它们写入CSV文件。我得到的错误是:
xml.etree.ElementTree.ParseError: not well-formed (invalid token): line 1, column 0
以下是我从以下网站收集的RSS提要:https://www.ba.no/service/rss
它适用于:https://www.nrk.no/toppsaker.rss和https://www.vg.no/rss/feed/?limit=10&format=rss&类别=&keywords=
这是这个RSS的功能:
import os
import xml.etree.ElementTree as ET
import csv
def baitem():
basepath = "../data_copy/bergens_avisen"
table = []
for fname in os.listdir(basepath):
if fname != "last_feed.xml":
files = ET.parse(os.path.join(basepath, fname))
root = files.getroot()
items = root.find("channel").findall("item")
#print(items)
for item in items:
date = item.find("pubDate").text
title = item.find("title").text
description = item.find("description").text
link = item.find("link").text
table.append((date, title, description, link))
return table
我用print(items)
进行了测试,它返回了所有对象。这可能是XML文件的编写方式吗?
问了一个朋友,说用try-except语句测试。找到一个.DS_Store文件,该文件仅适用于Mac计算机。我正在为那些将来可能遇到同样问题的人提供解决方案。
def baitem():
basepath = "../data_copy/bergens_avisen"
table = []
for fname in os.listdir(basepath):
try:
if fname != "last_feed.xml" and fname != ".DS_Store":
files = ET.parse(os.path.join(basepath, fname))
root = files.getroot()
items = root.find("channel").findall("item")
for item in items:
date = item.find("pubDate").text
title = item.find("title").text
description = item.find("description").text
link = item.find("link").text
table.append((date, title, description, link))
except Exception as e:
print(fname, e)
return table