xml.etree.ElementTree.ParseError: неправильно сформирован (неверный токен): строка 1, столбец 0 - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь разобрать каталог с коллекцией XML-файлов из RSS-каналов.У меня есть аналогичный код для другого каталога, работающего нормально, поэтому я не могу понять проблему.Я хочу вернуть элементы, чтобы записать их в файл 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&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 голосов
/ 19 ноября 2018

Спросил друга и сказал, чтобы проверить с попыткой, кроме заявления. Найден файл .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
...