Парсер всех XML файлов в папке


Есть задача - сделать парсер для всех XML файлов, лежащих в папке на рабочем столе, используя BS4 и/или LXML. Я новичок в этом вопросе, и единственное, на что хватило чтения документации - написать парсер для одного документа. А нужен такой, который пройдется по всем файлам (их слишком много, в ручную никогда не переписать, ибо файлы копились годами).

Ближе к сути - мой парсер считывает 4 тега в документе, и в дальнейшем он должен считывать теги вообще всех файлов, и сепарировать их по спискам (условный тег в список 1, в список 2 и т.д. Пример текущего скрипта для парсинга 1 файла:

from bs4 import BeautifulSoup
import lxml


with open("C:/Users/user/Desktop/folder/file.xml") as file:
    src = file.read()
soup = BeautifulSoup(src, "lxml")


uid = soup.find("prop", attrs={'name':'uid'})
print(uid.text)
language = soup.find("prop", attrs={'name':'language'})
print(language.text)
source = soup.find("prop", attrs={'name':'source'})
print(source.text)
PROFILE_URL = soup.find('PROFILE_URL')
print(PROFILE_URL)

Как это можно реализовать? Уже весь мозг себе сломал с этим парсингом... Чукча не Senior, тапками не кидаться :))


Ответы (1 шт):

Автор решения: Сергей

Теперь составьте список из xml файлов и пройдитесь по нему в цикле вставляя в вашу функцию путь к файлу .

import os
f = r"C:/Users/user/Desktop/folder"
e = r".xml"
g = [os.path.join(f, _) for _ in os.listdir(f) if   _.endswith(e)]
for a in g:
    with open(a, encoding="utf8") as file:
        src = file.read()
.....
→ Ссылка