xml.etree.ElementTree.ParseError:格式不正确(无效令牌):第1行,第0列

时间:2018-11-19 11:58:35

标签: python-3.6 elementtree parse-error xml.etree python-os

我正在尝试使用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.rsshttps://www.vg.no/rss/feed/?limit=10&format=rss&categories=&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文件吗?

1 个答案:

答案 0 :(得分:1)

问了一个朋友,说要尝试“除外”测试。找到一个.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