Этот скрипт будет go через каждые XML в каталоге (*.xml
) и извлечет первый <identifier>
под тегом <record>
:
import csv
import glob
from bs4 import BeautifulSoup
all_data = []
for filename in glob.glob(r'*.xml'):
with open(filename, 'r') as f_in:
soup = BeautifulSoup(f_in.read(), 'html.parser')
print(filename)
for i in soup.select('record identifier:nth-child(1)'):
print(i)
all_data.append([filename, i.get_text(strip=True)])
# write to csv file:
with open('data.csv', 'w', newline='') as csvfile:
csv_writer = csv.writer(csvfile, delimiter=',', quotechar='"', quoting=csv.QUOTE_MINIMAL)
for row in all_data:
csv_writer.writerow(row)
Печатает (например) :
a1.xml
<identifier>oai:union.ndltd.org:upv.es/oai:riunet.upv.es:10251/31652</identifier>
<identifier>oai:union.ndltd.org:upv.es/oai:riunet.upv.es:10251/32667</identifier>
<identifier>oai:union.ndltd.org:upv.es/oai:riunet.upv.es:10251/32953</identifier>
<identifier>oai:union.ndltd.org:upv.es/oai:riunet.upv.es:10251/56906</identifier>
<identifier>oai:union.ndltd.org:upv.es/oai:riunet.upv.es:10251/57282</identifier>
a2.xml
<identifier>oai:union.ndltd.org:upv.es/oai:riunet.upv.es:10251/31652xxx</identifier>
<identifier>oai:union.ndltd.org:upv.es/oai:riunet.upv.es:10251/32667xxx</identifier>
<identifier>oai:union.ndltd.org:upv.es/oai:riunet.upv.es:10251/32953</identifier>
<identifier>oai:union.ndltd.org:upv.es/oai:riunet.upv.es:10251/56906</identifier>
<identifier>oai:union.ndltd.org:upv.es/oai:riunet.upv.es:10251/57282</identifier>
И сохраняет data.csv
(скриншот из LibreOffice):
введите описание изображения здесь