簡體   English   中英

使用Python和beautifulSoup從XML輸出創建多個txt文件

[英]Creating Multiple txt files from XML output using Python and beautifulSoup

我有一個XML頁面,我想將其分成幾個部分,然后從每個部分中提取文本,然后將它們分離成一個.txt文件,其保存的名稱從001開始到099。例如,我想要第1部分的全部在名為001的文件中,第2節的全部在名為002的文件中,依此類推。 這是我到目前為止的內容:

import bs4 as bs
import urllib.request

source = urllib.request.urlopen('https://www.govinfo.gov/bulkdata/CFR/2018/title-49/CFR-2018-title49-vol1.xml/').read()

soup = bs.BeautifulSoup(source,'lxml')

for paragraph in soup.find_all('section'):
print(paragraph.string)
print(str(paragraph.text))

我想知道如何使用節保存在各自文件中來創建增量txt文件輸出。

要將所有部分組合在一起,可以使用Python的groupby()函數。 這具有從段落中提取節號的功能。 然后,groupby函數創建具有相同節號的所有段落的列表,並將它們一起返回:

from itertools import groupby
import bs4 as bs
import urllib.request

def section(paragraph):
    return paragraph.sectno.text.strip('§ ').split('.')[0]


source = urllib.request.urlopen('https://www.govinfo.gov/bulkdata/CFR/2018/title-49/CFR-2018-title49-vol1.xml/').read()
soup = bs.BeautifulSoup(source, 'lxml')

for section_number, paragraphs in groupby(soup.find_all('section'), section):
    filename = f'Section {int(section_number):02}.txt'

    with open(filename, 'w', encoding='utf-8') as f_output:
        section_text = '\n-------------\n'.join(p.text for p in paragraphs)
        f_output.write(section_text)

這些文件如下所示:

Section 01.txt
Section 03.txt
Section 05.txt
Section 06.txt
Section 07.txt
Section 08.txt
...
Section 10.txt
Section 80.txt
Section 89.txt
Section 91.txt
Section 92.txt
Section 93.txt
Section 98.txt
Section 99.txt

每個段落也用小行隔開。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM