4.2
[Xpath]
簡單來說我們通過Xpath可以獲取XML中的指定元素和指定節點的值。在網絡爬蟲中我們通過會把爬蟲獲取的HTML數
據轉換成XML結構,然后通過XPath解析,獲取我們想要的結果。
Xpath使用路徑表達式在XML文檔中選取節點。節點是通過沿著路徑來選取的,通過路徑可以找到我們想要的節點或者節點范圍。
xpath(‘span’) 選取span元素的所有子節點
xpath(‘/div’) 從根節點上選取div節點
xpath(‘//div’) 從當前節點選取含有div節點的標簽
xpath(‘./div’) 選取當前節點下的div標簽
xpath(‘../’) 回到上一級節點
xpath(“//div[@id=’1001’]”) 獲取div標簽中,含有ID屬性且值為1001的標簽
- 謂語(Predicates)
/bookstore/book[1]
選取屬于 bookstore 子元素的第一個 book 元素。
/bookstore/book[last()]
選取屬于 bookstore 子元素的最后一個 book 元素。
/bookstore/book[last()-1]
選取屬于 bookstore 子元素的倒數第二個 book 元素。
/bookstore/book[position()<3]
選取最前面的兩個屬于 bookstore 元素的子元素的 book 元素。
//title[@lang]
選取所有擁有名為 lang 的屬性的 title 元素。
//title[@lang='eng']
選取所有 title 元素,且這些元素擁有值為 eng 的 lang 屬性。
/bookstore/book[price>35.00]
選取 bookstore 元素的所有 book 元素,且其中的 price 元素的值須大于 35.00。
/bookstore/book[price>35.00]/title
選取 bookstore 元素中的 book 元素的所有 title 元素,且其中的 price 元素的值須大于 35.00。
XPath 通配符可用來選取未知的 XML 元素,通配指定節點。
匹配任何元素節點
xpath(/div/*)
選取div下的所有子節點
@*
匹配任何屬性節點
xpath(/div[@*])
選取所有帶屬性的div節點
node()
匹配任何類型的節點
xpath(//div[@class=’tb_cls’]).node()
擇標簽為div且類屬性為tb_cls的所有標簽
通過在路徑表達式中使用“|”運算符,您可以選取若干個路徑。
xpath(//book/title |//book/price)
選取 book 元素的所有 title 和 price 元素。
xpath(//title| //price)
選取文檔中的所有 title 和 price 元素
repr() 函數將對象轉化為供解釋器讀取的形式。
多態意思是“有多種形式”。多態意味著就算不知道變量所引用的對象類是什么,還是能對它進行操作,而它也會
根據對象(或類)類型的不同而表現出不同的行為。
多態的可以讓用戶對于不知道是什么類(或對象類型)的對象進行方法調用,而封裝是可以不用關心對象是如何
構建的而直接進行使用。
創建一個有對象(通過像調用函數一樣調用類)后,將變量c綁定到該對象上??梢允褂胹etName 和 getName
方法(假設已經有)
第一種方法__init__()方法是一種特殊的方法,被稱為類的構造函數或初始化方法,當創建了這個類的實例時就
會調用該方法
類的方法與普通的函數只有一個特別的區別——它們必須有一個額外的第一個參數名稱, 按照慣例它的名稱是
self。
類的繼承
面向對象的編程帶來的主要好處之一是代碼的重用,實現這種重用的方法之一是通過繼承機制。
通過繼承創建的新類稱為子類或派生類,被繼承的類稱為基類、父類或超類。
繼承語法
class 派生類名(基類名) ...
在python中繼承中的一些特點:
1、如果在子類中需要父類的構造方法就需要顯示的調用父類的構造方法,或者不重寫父類的構造方法。詳細說明
可查看:python 子類繼承父類構造函數說明。
2、在調用基類的方法時,需要加上基類的類名前綴,且需要帶上 self
參數變量。區別在于類中調用普通函數時并不需要帶上 self 參數
3、Python 總是首先查找對應類型的方法,如果它不能在派生類中找到對應的方法,它才開始到基類中逐個查找
。(先在本類中查找調用的方法,找不到才去基類中找)。
如果在繼承元組中列了一個以上的類,那么它就被稱作"多重繼承" 。
如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法:
__private_attrs:兩個下劃線開頭,聲明該屬性為私有,不能在類的外部被使用或直接訪問。在類內部的方法中
使用時 self.__private_attrs。
foo: 定義的是特殊方法,一般是系統定義名字 ,類似 init() 之類的。
_foo: 以單下劃線開頭的表示的是 protected
類型的變量,即保護類型只能允許其本身與子類進行訪問,不能用于 from module import *
__foo: 雙下劃線的表示的是私有類型(private)的變量, 只能是允許這個類本身進行訪問了。
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
- 上一篇: 数组array的一些用法
- 下一篇: protobuf在go中的应用