xml
什麼是xml
什麼是xpath?
xpath (xml path language) 是一門在 xml 文件中查詢資訊的語言,可用來在 xml 文件中對元素和屬性進行遍歷。
xpath 開發工具
示例文件
<?xml version="1.0" encoding="utf-8"?>
everyday italian
giada de laurentiis
2005
30.00
harry potter
j k. rowling
2005
29.99
xquery kick start
james mcgovern
per bothner
kurt cagle
james linn
vaidyanathan nagarajan
2003
49.99
learning xml
erik t. ray
2003
39.95
安裝lxml
pip install lxml
常用方法
etree.parse()
讀取xml檔案,結果為xml物件(不是字串)
etree.html(string_html)
將字串形勢的html檔案轉換為xml物件
etree.tostring(htmlelement, encoding=「utf-8」).decode(「utf-8」)
etree.tostring(html,encoding="utf-8", pretty_print=true).decode()
按字串序列化html文件
選擇器表示式
描述nodename
選取此節點的所有子節點。
/從根節點擊取。
//從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置。
.選取當前節點。
…選取當前節點的父節點。
@選取屬性。
範例
bookstore 選取 bookstore 元素的所有子節點(如果只有乙個的話)。
/bookstore 選取根元素 bookstore。注釋:假如路徑起始於正斜槓( / ),則此路徑始終代表到某元素的絕對路徑!
bookstore/book 選取屬於 bookstore 的直接子元素的所有 book 元素。
//book 選取所有 book 子元素,而不管它們在文件中的位置。
bookstore//book 選擇屬於 bookstore 元素的後代的所有 book 元素,而不管它們位於 bookstore 之下的什麼位置。
bookstore//book/@lang 選取book元素的lang屬性值。
bookstore//book[@class="book-css"]/title 選取class屬性值為「book-css」的book元素的title。
//*[@class="bold"] 獲取 class 值為 bold 的標籤名
**使用屬性時,不要忘記@符號**
> /表示直接子元素,//表示所有子孫元素
讀取案例-xml
#from lxml import etree #這樣寫後面會出現紅色波浪線
import lxml.html
etree = lxml.html.etree
# 讀取檔案:這個時候只時候讀取xml格式的檔案,顯然侷限性太強!!!!!
html = etree.parse('data.xml')
# 轉化為位元組字串
# result = etree.tostring(html, pretty_print=true)
# print(type(html)) # 顯示etree.parse() 返回型別
# print(result)
titles = html.xpath('/bookstore/book/title')
for tt in titles:
print(tt.text)
# 如果不是直接子元素就要用//
titles = html.xpath('/bookstore//title')
for tt in titles:
print(tt.text)
6. lxml讀取html檔案
自己建立html解析器,增加parser引數
import lxml.html
etree = lxml.html.etree
parser = etree.htmlparser(encoding="utf-8")
htmlelement = etree.parse("liepin.html", parser=parser)
print(htmlelement)
html_string=etree.tostring(htmlelement, encoding="utf-8").decode("utf-8")
#讀取innertext
links=htmlelement.xpath('//div/div/span/a')
for link in links:
print(link.text)
#讀取屬性的值
with open('liepin.html','r+') as fp:
content=fp.read()
html=etree.html(content)
links = html.xpath('//div/div/span/@title')
for title in titles:
print(title)
解析XML檔案(SAX方式解析XML)
解析xml檔案 sax方式解析xml 對xml檔案解析有四種方法 dom sax jdom dom4j 現著重講一下sax解析xml檔案。1 通過一定的方式獲取檔名 獲得檔案路徑 string xmlfilepath ticanserviceaccess.getsystemsupportservic...
解析XML檔案(SAX方式解析XML)
解析xml檔案 sax方式解析xml 對xml檔案解析有四種方法 dom sax jdom dom4j 現著重講一下sax解析xml檔案。1 通過一定的方式獲取檔名 獲得檔案路徑 string xmlfilepath ticanserviceaccess.getsystemsupportservic...
JSON解析 XML解析
json解析 1大括號代表字典 2中括號 小括號 代表陣列 3冒號的左右兩邊分別為鍵和值 key value 4資料和資料之間 用逗號隔開 我們在本機上建立乙個file.xml,進行解析,並取出年齡35 json解析 本地讀取student.xm l檔案nsstring jstr nsstring ...