我想修改 BS4 的原代码,让其禁止重新排序,不知道该改哪?

2016 年 11 月 26 日
 omg21
还是关于这个 BS4 处理代码重新排序的问题,如下:
<td height="250" class="infodetail" id="TDContent" valign="top">
上边这行代码经过 BeautifulSoup 处理后会变成
<td class="infodetail" height="250" id="TDContent" valign="top">
根据标签属性的顺序进行了重新排序。

我现在想着手在 BS4 的原代码里修改,让其禁止排序,原样输出,可是看了代码后就蒙了懵了,根本不知道从哪下手啊。。。
__init__.py dammit.py diagnose.py element.py testing.py
BS4 有这几个文件,得从哪里开始啃?
2266 次点击
所在节点    Python
5 条回复
sagaxu
2016 年 11 月 26 日
attrs 是用 dict 存的, dict 本身就不保证顺序,然后在 decode 的时候还做了排序,如果要保序,你需要把 attrs 改造成 list ,然后所有读写 attrs 的地方都要修改,估计得小半天才能改完
mkeith
2016 年 11 月 26 日
顺序有什么关系吗?
congeec
2016 年 11 月 26 日
启动 python 前加 PYTHONHASHSEED=0 环境变量。搜一下你就知道为吗乱续了
LaoK666
2016 年 11 月 26 日
@sagaxu OrderedDict 会不会更容易改些……
264768502
2016 年 11 月 26 日
乱序是 xml 标准的一环
不是 bs4 带来的乱序,是 xml 的 parser 引起的乱序
elementtree 可以 hack 它的函数,来保持原有的顺序(sf 上有人贴了代码的)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/323455

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX