前言
Python的beautifulsoup4库是我们在爬虫中经常用到的解析HTML页面的库,同样的它提供了对于xml解析的功能。
我这里利用其提供的对xml解析的功能写了一个示例,如有不足,欢迎指正。
正文
这是我自己写的示例
bookstore.xml
<?xml version="1.0" encoding="utf-8"?>
<bookstore>
<book>
<category>经典</category>
<title lang="zh">论语</title>
<author>孔子及其弟子</author>
<year>2012</year>
<date>6</date>
<price>38.99</price>
</book>
<book>
<category>诗歌</category>
<title lang="zh">离骚</title>
<author>屈原</author>
<year>2003</year>
<date>10</date>
<price>20.00</price>
</book>
<book>
<category>名著</category>
<title lang="zh">西游记</title>
<author>吴承恩</author>
<year>2008</year>
<date>8</date>
<price>60.00</price>
</book>
<book>
<category>童话</category>
<title lang="zh">格林童话</title>
<author>格林兄弟</author>
<year>2014</year>
<date>9</date>
<price>23.45</price>
</book>
<book>
<category>经典</category>
<title lang="zh">韩非子</title>
<author>韩非</author>
<year>2015</year>
<date>2</date>
<price>35.50</price>
</book>
<book>
<category>名著</category>
<title>三国演义</title>
<author>罗贯中</author>
<year>2019</year>
<date>6</date>
<price>65.00</price>
</book>
</bookstore>
python代码
from bs4 import BeautifulSoup as Bp
with open('bookstore.xml', 'r', encoding='utf-8') as rfile:
data = rfile.read()
soup = Bp(data, 'xml')
book_data = soup.find_all('book')
for item in book_data:
print('******Book Information******')
print('图书类别: ', item.category.text)
print('书名: ', item.title.text)
print('作者: ', item.author.text)
print('出版日期: ', item.year.text + '年' + item.date.text + '月')
print('价格: ', item.price.text)
执行结果
******Book Information******
图书类别: 经典
书名: 论语
作者: 孔子及其弟子
出版日期: 2012年6月
价格: 38.99
******Book Information******
图书类别: 诗歌
书名: 离骚
作者: 屈原
出版日期: 2003年10月
价格: 20.00
******Book Information******
图书类别: 名著
书名: 西游记
作者: 吴承恩
出版日期: 2008年8月
价格: 60.00
******Book Information******
图书类别: 童话
书名: 格林童话
作者: 格林兄弟
出版日期: 2014年9月
价格: 23.45
******Book Information******
图书类别: 经典
书名: 韩非子
作者: 韩非
出版日期: 2015年2月
价格: 35.50
******Book Information******
图书类别: 名著
书名: 三国演义
作者: 罗贯中
出版日期: 2019年6月
价格: 65.00