关于 xml 处理

由于和html打交道有一段时间了,对html网页的分析,我比较习惯使用bs4来做分析。

今天接触到一个 xml 格式的文件,打算自动处理了,以前我也使用过bs4,当时没有发现弊端。

  • xml 标签有命名空间
  • xml 标签和属性是区分大小写的
  • xml 不包含html 。 html中包含 html标签
    这和html 的标签分析是不一样的,bs4 有弊端。

对于第一个, xml 有命名空间的问题, bs4 的 lxml 解析模式, 可以将命名空间当成标签的一部分来做解释。

如下:

import bs4 
bsp = bs4.BeautifulSoup('<abc><a:bc>abc</a:bc></abc>', features='lxml')
print(bsp.findall('a\:bc'))

这样就可以将对应的标签找出来,注意这里分析是按照 html 来做的,不区分大小写。

在保存的时候,如果只是想分析一下xml文件,这种方法也还行。

但是想修改的话,bs4就完全沦陷了。

第一个就是bs4会默认添加html-head-body标签格式,这个我使用节点解析的方式,在body节点下找到原先的root节点,对原先的root节点进行保存还是可以解决的。

第二个沦陷的地方就是保存的标签默认全是小写, 大小写被忽略了。

这个保存的xml和原先的xml在xml的语法是两个意思。


最后发现,这条路是完全走不通的。

然后我找到了 python中的 xml.etree.ElementTree, 这个才是正解。对原先的bs4代码进行替换,问题才算解决,继续结下来的工作 … <|-_-|>


参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值