使用BeautifulSoup(或其他一些Python解决方案)进行选择性解析

2024-05-02 12:42:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要有选择地解析一个html文件。也就是说,我需要删除一些以类或id为条件的元素,同时保持文件的其余部分不变。我试了一下,然后跟着this suggestion。但是,在<pre>标记中包含html代码并没有真正起作用:BeautifulSoup仍然在html文件中引入了许多更改(例如,它反转了altsrc之间在img中的顺序)。相反,我需要的是文件的其余部分保持原样。你知道吗

下面是我的脚本(从STDIN获取一个html文件):

import sys
from bs4 import BeautifulSoup

myfile = sys.stdin

with myfile:
    soup = BeautifulSoup("<pre>" + myfile.read() + "</pre>","lxml")

for element in soup.find_all(True,{'class':'sidenote'}):
    element.extract()

print(soup)

输出类似,只是有一些变化。例如,在输入文件中

<img src="fig/figura-06-01-b.jpg" alt="Figura 6.1b" />

变成

<img alt="Figura 6.1b" src="fig/figura-06-01-b.jpg"/>

我知道这是一个文件的小修改,这是无关的,如果文件的最终目的地是在网站上发布。但是,由于我需要进一步解析文件(以生成tex代码),这个更改迫使我修改其他脚本。你知道吗

我的问题更一般:有没有办法只改变作为输入的html文件的某些部分?你知道吗


Tags: 文件代码importsrc脚本imghtmlsys