相信寫過爬蟲的同學,都知道XPath的存在。博主最近在學習 Scrapy 的時候,就了解了壹下XPath語法,這裏給大家簡單地介紹壹下:
首先我們需要了解幾個 XPath 術語。
2017/3/3 16:02:29
在 XPath 中,有七種類型的節點:元素、屬性、文本、命名空間、處理指令、註釋以及文檔(根)節點。XML 文檔是被作為節點樹來對待的。樹的根被稱為文檔節點或者根節點。
以下面這xml文檔為例:
上面例子的節點為:
父:每個元素以及屬性都有壹個父。例子中<student>的父是<class>;
子:元素節點可有零個、壹個或多個子。例子中<class>的子是<student>;
兄弟:擁有相同的父的節點。例子中<name>和<ID>是兄弟;
祖先:某節點的父、父的父,等等。
後代:某節點的子、子的子,等等。
基本值是無父或無子的節點。
上面例子的基本值為:
項目是基本值或者節點。
ok,接下來開始正式講解 XPath 語法(註意,以下表達式當然可以混合使用):
選取此節點的所有子節點。
從根節點選取。
從匹配選擇的當前節點選擇文檔中的節點,而不考慮它們的位置。
選取當前節點。
選取當前節點的父節點。
選取屬性。
對於如下的xml文檔(參照 /articles/iqQFBn )
如果使用:
data = selector.xpath('//div[@id="test2"]/text()').extract()[0]
只能提取到“美女,”;
如果使用:
data = selector.xpath('//div[@id="test2"]/font/text()').extract()[0]
又只能提取到“妳的微信是多少?”
到底我們要怎樣才能把“美女,妳的微信是多少”提取出來?
輕松搞定,沒有後顧之憂!!