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 指可擴(kuò)展標(biāo)記語言(EXtensible Markup Language)。
XML 是一種很像HTML的標(biāo)記語言。
XML 的設(shè)計(jì)宗旨是傳輸數(shù)據(jù),而不是顯示數(shù)據(jù)。
XML 標(biāo)簽沒有被預(yù)定義。您需要自行定義標(biāo)簽。
XML 被設(shè)計(jì)為具有自我描述性。
XML 是 W3C 的推薦標(biāo)準(zhǔn)。
3、什么是 RSS?
RSS 指 Really Simple Syndication(真正簡易聯(lián)合)
RSS 使您有能力聚合(syndicate)網(wǎng)站的內(nèi)容
RSS 定義了非常簡單的方法來共享和查看標(biāo)題和內(nèi)容
RSS 文件可被自動更新
RSS 允許為不同的網(wǎng)站進(jìn)行視圖的個性化
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的詳細(xì)內(nèi)容,更多關(guān)于python xmltodict庫的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
python強(qiáng)大的hook函數(shù)使用及應(yīng)用場景
鉤子函數(shù)(hook function)是把我們自己實(shí)現(xiàn)的hook函數(shù)在某一時刻掛接到目標(biāo)掛載點(diǎn)上,這篇文章主要介紹了python強(qiáng)大的hook函數(shù)使用及應(yīng)用場景,需要的朋友可以參考下2023-05-05
Python的變量命名規(guī)范和數(shù)據(jù)類型轉(zhuǎn)換詳解
文章主要介紹了Python的變量命名規(guī)則和數(shù)據(jù)類型,包括整數(shù)、浮點(diǎn)數(shù)、字符串、布爾值和空值類型,此外,文章還闡述了不同類型之間的轉(zhuǎn)換方法,如將浮點(diǎn)數(shù)轉(zhuǎn)換為整數(shù)、將字符串轉(zhuǎn)換為數(shù)字類型或布爾值等,感興趣的朋友跟隨小編一起看看吧2026-03-03
解決Shell執(zhí)行python文件,傳參空格引起的問題
今天小編就為大家分享一篇解決Shell執(zhí)行python文件,傳參空格引起的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
python csv實(shí)時一條一條插入且表頭不重復(fù)問題
這篇文章主要介紹了python csv實(shí)時一條一條插入且表頭不重復(fù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-05-05
python圖像填充與裁剪/resize的實(shí)現(xiàn)代碼
這篇文章主要介紹了python圖像填充與裁剪/resize,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-08-08
Tensorflow Summary用法學(xué)習(xí)筆記
這篇文章主要介紹了Tensorflow Summary用法學(xué)習(xí)筆記,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
pycharm 無法加載文件activate.ps1的原因分析及解決方法
這篇文章主要介紹了pycharm報錯提示:無法加載文件\venv\Scripts\activate.ps1,因?yàn)樵诖讼到y(tǒng)上禁止運(yùn)行腳本,解決方法終端輸入get-executionpolicy,回車返回Restricted即可,需要的朋友可以參考下2022-11-11
python百行代碼實(shí)現(xiàn)漢服圈圖片爬取
這篇文章主要為大家介紹了使用python百行代碼來實(shí)現(xiàn)漢服圈的圖片爬取,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11

