gpt4 book ai didi

Python——beautifulsoup改变属性定位

转载 作者:行者123 更新时间:2023-12-04 09:26:56 25 4
gpt4 key购买 nike

嗨,我正在尝试解析 html 代码
我附上了几行html

<link rel="stylesheet" href="assets/css/fontawesome-min.css">
<link rel="stylesheet" href="assets/css/bootstrap.min.css">
<link rel="stylesheet" href="assets/css/xsIcon.css">
当我将其加载到 beautifulsoup 时,它会按字母顺序更改属性位置,如下面的代码
<link href="assets/css/fontawesome-min.css" rel="stylesheet"/>
<link href="assets/css/bootstrap.min.css" rel="stylesheet"/>
<link href="assets/css/xsIcon.css" rel="stylesheet"/>
您可以看到差异最初 rel 是在 href 之前,只是在加载和写入文件后再次更改属性顺序。
有什么办法可以防止这种情况发生。
谢谢

最佳答案

来自 documentation ,您可以使用自定义 HTMLFormatter :

from bs4 import BeautifulSoup
from bs4.formatter import HTMLFormatter


txt = '''<link rel="stylesheet" href="assets/css/fontawesome-min.css">
<link rel="stylesheet" href="assets/css/bootstrap.min.css">
<link rel="stylesheet" href="assets/css/xsIcon.css">'''

class UnsortedAttributes(HTMLFormatter):
def attributes(self, tag):
for k, v in tag.attrs.items():
yield k, v

soup = BeautifulSoup(txt, 'html.parser')

#before HTMLFormatter
print( soup )

print('-' * 80)

#after HTMLFormatter
print( soup.encode(formatter=UnsortedAttributes()).decode('utf-8') )
打印:
<link href="assets/css/fontawesome-min.css" rel="stylesheet"/>
<link href="assets/css/bootstrap.min.css" rel="stylesheet"/>
<link href="assets/css/xsIcon.css" rel="stylesheet"/>
--------------------------------------------------------------------------------
<link rel="stylesheet" href="assets/css/fontawesome-min.css"/>
<link rel="stylesheet" href="assets/css/bootstrap.min.css"/>
<link rel="stylesheet" href="assets/css/xsIcon.css"/>

关于Python——beautifulsoup改变属性定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62971773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com