1. 程式人生 > >網頁結構的簡介和Xpath語法的入門教程

網頁結構的簡介和Xpath語法的入門教程

則表達式 scrapy ebp 結構 view 根據 廣泛 wechat db2

相信很多小夥伴已經聽說過Xpath,之前小編也寫過一篇關於Xpath的文章,感興趣的小夥伴可以戳這篇文章如何利用Xpath抓取京東網商品信息以及Python網絡爬蟲四大選擇器(正則表達式、BS4、Xpath、CSS)總結。今天小編繼續給大家介紹一些Xpath知識點,希望對大家的學習有幫助。

1、Xpath讓我們可以使用一種類似於Windows下的文件路徑的方式,讓我們可以定位到HTML或者XML結構中的具體元素。Xpath本身包含標一些準函數庫,可以讓我們的Xpath語法更加強大。

技術分享圖片

2、在HTML結構中,有一定的層級關系,主要的關系包括:父節點、子節點、同胞節點(兄弟節點)、先輩節點、後代節點。

技術分享圖片

一般的,像類似於這種結構,稱之為一個節點。如上圖,根據層次關系,我們可以知道節點是的父節點,相應的,節點是節點的子節點。同胞節點又叫兄弟節點,一般的處於同級層次的節點叫同胞節點,如上圖中的節點和第一個

節點、177~181行的
  • 標簽都是屬於同胞節點。先輩節點又叫祖先節點,一般的,一個節點的上層以上的節點均稱為先輩節點,所以父節點也是屬於先輩節點的一種。基於此,我們又可以稱節點是的先輩節點。相對應的,一個節點的下層以下的節點均稱為後代節點,所以子節點也是屬於後代節點的一種。基於此,我們又可以稱節點是節點的後代節點。

3、理解這些節點之間的關系之後,可以方便我們更好的理解Xpath語法,下表是部分常用的Xpath語法。

技術分享圖片

這裏特別強調“/”和“//”的區別,“/”一般代表的某個元素的子節點,而不是全部的後代節點;而“//”一般代表的某個元素的後代節點,範圍比“/”代表的要更加廣泛一些。@符號後邊時常跟著class,代表選取名為class屬性的節點,比較常見。

4、下面針對具體的網頁源碼,讓大家了解一下網頁結構。

技術分享圖片

如上圖中的紅色框框中,class為屬性,而等於號後邊的“grid-5”即為屬性值,有的時候節點內不只是一個屬性,如上圖中的196行中,就有兩個屬性。

5、為了更加方便的定位到div或者其他節點下的標簽,我們需要繼續進一步的進行定位鎖定,下表是部分常用的Xpath語法。

技術分享圖片

掌握了Xpath語法知識之後,我們就可以通過Xpath語法來進行編寫Xpath表達式,以提取網頁上的目標數據。

技術分享圖片

千裏之行,始於足下。如果想學好Xpath,更是需要勤加使用,下一篇文章將給大家介紹Xpath在Scrapy爬蟲項目中的使用。

網頁結構的簡介和Xpath語法的入門教程