XPath 是一門在 XML 文檔中查找信息的語言。XPath 用于在 XML 文檔中通過元素和屬性進行導航。
在爬山虎采集器中,我們用 XPath 來查找定位網頁中的 Html 元素。 可以說 XPath 在采集器中是一個非?;A、非常重要的技術,在一些復雜的網頁,可能需要手動 編寫 XPath 表達式來解決問題。
具體的 XPath 知識,大家可用通過 http://www.w3school.com.cn/xpath/index.asp 來學習。
在爬山虎采集器中,列表模式、手動設置分頁、字段中都是通過 XPath 來定位數據的。 都可以通過手動設置 XPath 來修改、完善 XPath 表達式
XPath 可以填寫多條,以作為補充、備用。
建議:如果手動編寫 XPath ,盡量使用 class 來定位,比如 //div[@class='xxx']
。相對于使用 /div[1]
索引這種方式更加穩定。
絕對路徑、相對路徑 XPath
列表模式下,字段是在列表中的一個節點中進行匹配,XPath 是以./
開頭,表示當前節點的意思。而單條模式時,字段是在整個頁面中進行匹配的。
列表模式下,字段的 XPath 需要是列表項的相對 XPath ,比如 ./div[1]/div[1]/span[1]
單條模式下,字段的 XPath 是絕對 XPath,比如//div[@class='xxx']
根據文本生成 XPath
在采集一些網站,多個頁面之間的數據有差異,會導致我們采集的數據發生錯位。 在瀏覽器右鍵菜單里,我們提供了2種生成相對 XPath 的方法
- 通過前綴文本生成
根據當前節點之前的文本來生成一個 XPath,類似://span[contains(text(),'評分:')]/following-sibling::span[1]
, - 通過當前文本生成
根據當前節點的文本來生成一個 XPath,類似://span[contains(text(),'來自?164?份評價')]
,然后我們將其中的來自?164?
去掉,得出//span[contains(text(),'份評價')]
,我們就可以獲取到評價數量了。