python第三方模塊xmltodict庫優(yōu)雅處理xml格式為json
今天給大家?guī)硪黄P(guān)于python第三方模塊xmltodict的使用文章。
1、背景:
工作中我們經(jīng)常處理一些xml格式的數(shù)據(jù),比如在抓取某網(wǎng)站數(shù)據(jù)時,我們會取巧去抓取他的RSS訂閱信息等,那我們怎么解析這些數(shù)據(jù)呢,有一些傳統(tǒng)的類似html lxml的工具包,今天給大家?guī)硪粋€xmltodict 優(yōu)雅處理xml格式為json的庫
2、什么是 XML?
XML 指可擴展標記語言(EXtensible Markup Language)。
XML 是一種很像HTML的標記語言。
XML 的設(shè)計宗旨是傳輸數(shù)據(jù),而不是顯示數(shù)據(jù)。
XML 標簽沒有被預定義。您需要自行定義標簽。
XML 被設(shè)計為具有自我描述性。
XML 是 W3C 的推薦標準。
3、什么是 RSS?
RSS 指 Really Simple Syndication(真正簡易聯(lián)合)
RSS 使您有能力聚合(syndicate)網(wǎng)站的內(nèi)容
RSS 定義了非常簡單的方法來共享和查看標題和內(nèi)容
RSS 文件可被自動更新
RSS 允許為不同的網(wǎng)站進行視圖的個性化
RSS 使用 XML 編寫
4、xmltodict安裝
pip3 install xmltodict
5、我們看下如何使用
import xmltodict import json xml_str = ''' <bookstore> <book category="COOKING"> <title lang="en">Everyday Italian</title> <author>Giada De Laurentiis</author> <year>2005</year> <price>30.00</price> </book> <book category="CHILDREN"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>2005</year> <price>29.99</price> </book> <book category="WEB"> <title lang="en">Learning XML</title> <author>Erik T. Ray</author> <year>2003</year> <price>39.95</price> </book> </bookstore> ''' new_dict_obj = xmltodict.parse(xml_str) # 返回一個OrderedDict類型的對象 json_str = json.dumps(new_dict_obj) # 使用內(nèi)置的json模塊轉(zhuǎn)換成json print(json_str)
結(jié)果如下:
{"bookstore": {"book": [{"@category": "COOKING", "title": {"@lang": "en", "#text": "Everyday Italian"}, "author": "Giada De Laurentiis", "year": "2005", "price": "30.00"}, {"@category": "CHILDREN", "title": {"@lang": "en", "#text": "Harry Potter"}, "author": "J K. Rowling", "year": "2005", "price": "29.99"}, {"@category": "WEB", "title": {"@lang": "en", "#text": "Learning XML"}, "author": "Erik T. Ray", "year": "2003", "price": "39.95"}]}}
如何轉(zhuǎn)成xml
直接上代碼
import xmltodict new_dict_obj = {"bookstore": {"book": [{"@category": "COOKING", "title": {"@lang": "en", "#text": "Everyday Italian"}, "author": "Giada De Laurentiis", "year": "2005", "price": "30.00"}, {"@category": "CHILDREN", "title": {"@lang": "en", "#text": "Harry Potter"}, "author": "J K. Rowling", "year": "2005", "price": "29.99"}, {"@category": "WEB", "title": {"@lang": "en", "#text": "Learning XML"}, "author": "Erik T. Ray", "year": "2003", "price": "39.95"}]}} new_xml = xmltodict.unparse(new_dict_obj)# 這里直接放dict對象 print(new_xml)
結(jié)果如下
<?xml version="1.0" encoding="utf-8"?>
<bookstore><book category="COOKING"><title lang="en">Everyday Italian</title><author>Giada De Laurentiis</author><year>2005</year><price>30.00</price></book><book category="CHILDREN"><title lang="en">Harry Potter</title><author>J K. Rowling</author><year>2005</year><price>29.99</price></book><book category="WEB"><title lang="en">Learning XML</title><author>Erik T. Ray</author><year>2003</year><price>39.95</price></book></bookstore>
6、網(wǎng)站抓取中使用
獲取xml數(shù)據(jù)源鏈接
請求數(shù)據(jù)源
import requests import xmltodict headers = { } url = "https://boyyongxin.github.io/atom.xml" response = requests.get(url, headers=headers,verify=False) xml_str = response.text new_dict_obj = xmltodict.parse(xml_str) print(new_dict_obj)
得到的結(jié)果我們就可以json方式去提取了
以上就是python第三方模塊xmltodict庫優(yōu)雅處理xml格式為json的詳細內(nèi)容,更多關(guān)于python xmltodict庫的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
詳解解決Python memory error的問題(四種解決方案)
這篇文章主要介紹了詳解解決Python memory error的問題(四種解決方案),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-08-08Python 使用元類type創(chuàng)建類對象常見應用詳解
這篇文章主要介紹了Python 使用元類type創(chuàng)建類對象,結(jié)合實例形式詳細分析了Python元類的概念、功能及元類type創(chuàng)建類對象的常見應用技巧,需要的朋友可以參考下2019-10-10一文教你將Visual Studio Code變成Python開發(fā)神器
Visual Studio Code 是一款功能強大、可擴展且輕量級的代碼編輯器,經(jīng)過多年的發(fā)展,已經(jīng)成為 Python 社區(qū)的首選代碼編輯器之一。本文將為大家介紹一下如何將Visual Studio Code變成Python開發(fā)神器,需要的可以參考一下2022-07-07