(1)xml指可擴充套件標記語言(extensible markup language)
(2)xml是一中標記語言,類似於html
(3)xml的設計宗旨是傳輸資料,而非顯示資料
(4)xml的標籤需要我們自行定義
(5)xml被設計為具有自我描述性
(6)xml是w3c的推薦標準
官方文件:
資料格式
描述設計目標
xmlextensible markup language(可擴充套件標記語言)
被設計為傳輸和儲存資料,其焦點是資料的內容。
html
hypertext markup language(超文字標記語言)
顯示資料以及如何更好顯示資料。
html dom
document object model for html(文件物件模型)
通過 html dom,可以訪問所有的 html 元素,連同它們所包含的文字和屬性。可以對其中的內容進行修改和刪除,同時也可以建立新的元素。
html dom定義了訪問和操作html文件的標準方法,以樹結構方式表達html文件。
每個元素以及屬性都有乙個父
xml version="1.0" encoding="utf-8"book元素是title、author、year以及price元素的父。?>
<
book
>
<
title
>harry potter
title
>
<
author
>j k. rowling
author
>
<
year
>2005
year
>
<
price
>29.99
price
>
book
>
元素節點可有零個、乙個或多個子
title、author、year以及price元素都是book元素的子。
擁有相同的父的節點
title、author、year和price元素都是同胞
某節點的父、父的父等
xml version="1.0" encoding="utf-8"title元素的先輩是book元素和bookstore元素?>
<
bookstore
>
<
book
>
<
title
>harry potter
title
>
<
author
>j k. rowling
author
>
<
year
>2005
year
>
<
price
>29.99
price
>
book
>
bookstore
>
某個節點的子,子的子等
bookstore的後代是book、title、author、year以及price元素
xpath(xml path language)是一門在xml文件中查詢資訊的語言,可用來在xml文件中對元素和屬性進行遍歷。
xpath的官方文件:
(2)chrome外掛程式xpath helper
(3)firefox外掛程式xpath checker
xpath使用路徑表示式來選取xml文件中的節點或者節點集。
表示式描述
nodename
選取此節點的所有子節點。
/從根節點擊取。
//從匹配選擇的當前節點擊擇文件中的節點,而不考慮它們的位置。
.選取當前節點。
..選取當前節點的父節點。
@選取屬性。
路徑表示式以及表示式的結果:
`bookstore` 選取bookstore元素的所有子節點
`/bookstore` 選取根元素bookstore。注釋:假如路徑起始於正斜槓(/),則此路徑始終代表到某元素的絕對路徑。
`bookstore/book` 選取屬於bookstore的子元素的所有book元素
`//book` 選取所有book子元素,而不管它們在文件中的位置
`bookstore//book` 選擇屬於bookstore元素的後代的所有book元素,而不管它們位於bookstore之下的什麼位置
`//@lang` 選取名為lang的所有屬性
謂語用來查詢某個特定的節點或者包含某個指定的值的節點,被嵌在方括號中。
路徑表示式以及表示式的結果:
`/bookstore/book[1]` 選取屬於bookstore子元素的第乙個book元素
`/bookstore/book[last()]` 選取屬於bookstore子元素的最後乙個book元素
`/bookstore/book[last()-1]` 選取屬於bookstore子元素的倒數第二個book元素
`/bookstore/book[position()<3]` 選取最前面的兩個屬於bookstore元素的子元素的book元素
`//title[@lang='eng']` 選取所有title元素,且這些元素擁有值為eng的lang屬性
`//title[@lang]` 選取所有擁有名為lang的屬性的title元素
`/bookstore/book[price>35.00]` 選取bookstore元素的所有book元素,且其中的price元素的值必須大於35.00
`/bookstore/book[price>35.00]/title` 選取bookstore元素的所有book元素中的,price元素值大於35的條件下,book元素中的title元素。
xpath萬用字元可以用來選取位置的xml元素。
萬用字元描述
*匹配任何元素節點。
@*匹配任何屬性節點。
node()
匹配任何型別的節點。
路徑表示式以及表示式的結果:
`/bookstore/*` 選取bookstore元素的所有子元素
`//*` 選取文件中的所有元素
`html/node()/meta/@*` 選取html下面任意節點下的meta節點的所有屬性
`//title[@*]` 選取所有帶有屬性的title元素
通過在路徑表示式中使用"|"運算子,可以選取若干個路徑。
`//book/title | //book/price` 選取book元素的所有title和price元素
`//title | //price` 選取文件中的所有title和price元素
`/bookstore/book/title | //price` 選取屬於bookstore元素的book元素的所有title元素,以及文件中所有的price元素
8、lxml庫
lxml是乙個html/xml的解析器,主要的功能是如何解析和提取html/xml資料。
lxml和正則一樣,也是用 c 實現的,是一款高效能的 python html/xml 解析器,可以利用之前的xpath語法,來快速的定位特定元素以及節點資訊。
lxml python的官方文件:
安裝:`pip install lxml`
from lxml importetree
from pprint import
pprint
text = """
first item
second item
third item
fourth item
fifth item
"""#利用etree.html,將字串解析為html文件
html =etree.html(text)
#將字串序列化為html文件
result =etree.tostring(html)
#print(result.decode())
#利用etree.parse()來讀取外部檔案
html = etree.parse("
./hello.html")
result = etree.tostring(html,pretty_print=true)
#print(result.decode())
(type(html))
#ret = html.xpath("
//li")
(ret)
(len(ret))
(type(ret))
(type(ret[0]))
#[, , , , ]#5
##
Python爬蟲Xpath和lxml類庫系列之九
xpath xml path language 是一門在 xml 文件中查詢資訊的語言,可用來在 xml 文件中對元素和屬性進行遍歷。謂語用來查詢某個特定的節點或者包含某個指定的值的節點,被嵌在方括號中。xpath 萬用字元可用來選取未知的 xml 元素。通過在路徑表示式中使用 運算子,您可以選取若...
lxml類庫的xpath的使用
為什麼要學習lxml類庫和xpath呢?lxml類庫是一款高效能的python html xml解析器,我們可以利用xpath,來快速地定位特定元素以及獲取節點資訊。xpath是一門在html xml文件中查詢資訊的語言,可用來在html xml文件中對元素和屬性進行遍歷。xml和html的區別?x...
爬蟲訓練(五) Lxml庫與Xpath語法
一 lxml庫 lxml庫為xml解析庫,但也很好的支援了html文件的解析功能。lxml庫很實用的功能就是自動修正html 二 xpath語法 xpath是一門在xml文件中查詢資訊的語言,對html文件也有很好的支援。1 節點關係 節點名性質父節點 每個元素及屬性都有乙個節點 子節點元素節點可能...