python下操作xml和html

    最近项目需要一个做一个小工具, 开始时想到了用shell写一个脚本, 后来由于要操作xml和html, 感觉shell操作起来不方便, 于是想到了用python, 但我对python一点不懂, 于是现学, 网上找了一个简明教程看了一下, 然后就开始我的第一个python程序了.

    今天把这个程序里用到了关于xml和html操作的部分, 记录下来, 以便加深自己的印象. 在网上搜索的结果让我决定用BeautifulSoup这个库, 这个库对html解析的支持很好, xml的解析依赖另一个库lxml, 于是我又下载安装了lxml. 好了, 工具齐备了.

    我的需求其实很简单, 第一个需求是修改一个html文件里某个tag的属性. 第二个需求是修改一个xml文件的属性, 都是修改他们.

    BeautifulSoup应该是在解析时把他们读入到内存一个数据结构里面, 然后就可以对这个数据结构便捷地操作, 如果初始化时发现格式有问题, 还可以给你自动补全.

    一. 修改html文件:

    先说说修改html, 我需要找到某个标签的属性, 然后写入新值, 比如有如下html文件

<!DOCTYPE html>
<html lang="zh-cn">
<body>
  <p class="name">jodan</p>
  <p class="sex">male</p>
</body>
</html>
需要把里面class=name的标签名字改为kobi, 那么python代码如下:
import os
from bs4 import BeautifulSoup #引入BeautifulSoup

fp = open("test.html",'r+')
soup = BeautifulSoup(fp)#根据文件内容新建一个BeautifulSoup对象
name = soup.find(class_="name")#搜索class为name的tag
name.string = "kobi"#修改为新的名字
fp.seek(0,os.SEEK_SET)#移动到文件头
fp.write(str(soup))#重写整个文件
fp.close()
注意由于class是python的关键字, 需要用class_方能搜索到属性class.


    二.修改xml文件:

    需求也是找到某个标签的属性, 修改为新的值, 比如有如下xml:

<?xml version="1.0" encoding="UTF-8"?>
<channels>
	<channel>name</channel>
</channels>
修改channel标签的值为newChannel, python代码如下:
import os
from bs4 import BeautifulSoup

fp = open("test.xml",'r+')
soup = BeautifulSoup(fp,"xml")
numbers = soup.find_all('channel')
numbers[0].string = "newChannel"
fp.seek(0,os.SEEK_SET)
fp.write(str(soup))
fp.close()
代码几乎和修改html文件一样, 不同的是初始化BeautifulSoup对象是, 需要传入一个额外参数'xml'来表明解析的是xml格式的文件.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值