使用scrapy爬蟲,不可避免的需要對網(wǎng)頁結構進行分析并提取,其中用到的一個重要的工具就是XPath。XPath可以幫助我們很方便的對html元素進行定位選擇。
在Chrome中使用XPath
在chrome中使用XPath,只需要在開發(fā)者工具中點擊控制臺(Console)標簽,然安徽使用$x功能就可以了。

比如獲取所有的section標簽,我們使用$x('//section'),控制臺中就可以看到一個包含所有元素的Javascript數(shù)組。將光標移動到這個數(shù)組上,還可以看到被選擇的元素被高亮顯示。

至于這個表達式('//section')的規(guī)則是如何的,下面來粗略的介紹一下。
XPath表達式
/ 單斜杠
HTML文檔的層級結構的最高級是<html>標簽??梢允褂迷孛托备芫€選擇任意元素。
以這個html文檔為例:

獲取body標簽使用/html/body
獲取body下的section標簽使用/html/body/section,因為有5個section元素,所以這個結果是有5個元素的JavaScript數(shù)組。
可以使用[index]來獲取這個數(shù)組的元素。
例如要獲取第一個section標簽,使用/html/body/section[1]
注意:這個地方index是從1開始計算的,而不是0,這跟一般的數(shù)組獲取元素有點不同。

// 雙斜杠
// 可以訪問所有的同名元素
例如,要找到html中所有的section元素,使用//section即可

@ 訪問屬性
比如獲取head中的charset屬性


也可以只通過text()函數(shù)選擇文字。
在Chrome瀏覽器中獲得XPath表達式
提前應對網(wǎng)頁發(fā)生改變
. 避免使用數(shù)組序號
. 用class抓取效果不一定好
. 數(shù)據(jù)指向的class優(yōu)于排版指向的class
. id通常是最可靠的