python下操作xml和html
来源:互联网 发布:php在线人数统计 编辑:程序博客网 时间:2024/05/21 18:48
最近项目需要一个做一个小工具, 开始时想到了用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 osfrom bs4 import BeautifulSoup #引入BeautifulSoupfp = open("test.html",'r+')soup = BeautifulSoup(fp)#根据文件内容新建一个BeautifulSoup对象name = soup.find(class_="name")#搜索class为name的tagname.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 osfrom bs4 import BeautifulSoupfp = 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格式的文件.
- python下操作xml和html
- 兼容在IE和Firefox浏览器下操作XML(英)
- .net下操作XML的几篇文章
- .net下操作XML的几篇文章
- ASP.net(C#)下操作XML文件
- lightgbm python基本使用 --mac下操作
- 在vs2008下操作excel和数据库
- Python下操作excel文件--在win7下入xlrd库的安装和引入
- python命令行终端下操作界面库(curses,urwid,npyscreen)
- 使用python在openwrt下操作串口发送十六进制数据
- Linux 内核配置和编译(Ubuntu 10.4下操作)
- linux下操作mysql和一些常规操作
- MySQL 事件调度器 -- phpmyadmin和命令行下操作
- Linux 内核配置和编译(Ubuntu 10.4下操作)
- .NET下操作注册表
- android下操作FrameBuffer
- linux下操作
- android下操作FrameBuffer
- Bitset 类小议
- 结构体问题集粹
- c# 操作xml文件
- ViewGroup中的触摸消息派发dispatchTouchEvent
- 黑马程序员-----java面向对象思想总结*
- python下操作xml和html
- C#获取当前路径的方法
- 用UIWebView在当前程序中打开网页的代码
- 30天自制操作系统笔记(七八)——源码
- java(15)-策略模式(Strategy Pattern)
- ARM处理器架构-----协处理器
- 学习C语言的一些小练习
- 送某位经济学高才生一个小故事...
- 堆区和栈区的区别(一)