能不能不让 BS4 重新排序?

2016-11-25 22:51:48 +08:00
 omg21
我发现 BS4 处理代码时会改变属性的顺序,
<td height="250" class="infodetail" id="TDContent" valign="top">
上边这行代码经过 BeautifulSoup(htmlstr,'html.parser')处理后会变成
<td class="infodetail" height="250" id="TDContent" valign="top">
很显然,这是根据标签属性的顺序进行了重新排序,有什么方法能不能取消这种排序吗?

(我因为装了几次 lxml 都不成功,所以还是在用 html.parser)
1536 次点击
所在节点    Python
10 条回复
Ginson
2016-11-25 23:00:57 +08:00
排序的问题我不知道怎么解决,但是我刚刚在一 V 友指点下成功安装 lxml ,这点可以分享给你
秘诀就是……把这几个库装全: python-dev libxml2 libxml2-dev libxslt-dev gcc make
Ginson
2016-11-25 23:04:07 +08:00
同时我还帮你测试了下, lxml 不会重新排序标签属性
![lxml]( )
omg21
2016-11-25 23:05:51 +08:00
@Ginson 好的,我先试试,谢谢
mingyun
2016-11-25 23:23:40 +08:00
我用 python3 执行 没出现楼主的情况
omg21
2016-11-25 23:35:59 +08:00
@mingyun 我是 python34
omg21
2016-11-25 23:37:13 +08:00
@Ginson 不行啊,装了 lxml 后,仍然会重新排序,而且还把<html><body>给加了上。。。
omg21
2016-11-25 23:39:01 +08:00
@Ginson 哦,我细看了下你的代码,最后一行,你打印的是 a ,难道不应该是 str(s)吗?
Ginson
2016-11-26 00:07:13 +08:00
@omg21 对哦,我智障了
试了打印 s ,果然还是会按字母顺序给属性排序,同时加上 html 和 body
huangfs
2016-11-26 11:06:43 +08:00
这会影响什么嘛?
omg21
2016-11-26 11:51:37 +08:00
@huangfs 容易造成混乱,如果没有重新排序,在原代码里手动也能搜到,重新排序后就搜不到了。

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

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

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

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

© 2021 V2EX