python爬蟲---xpath解析語法

什麼是Xpath? 

Xpath 是一門在XML或者html文檔中導航查找信息的語法,對HTML有很好的支持 xpath 是一個w3c的標準;xpath 包含標準庫;

Xpath語法的詳細用法?

  • 1.節點關係 (層次關係)
  • 2.節點選擇

   2.1節點選擇
     表達式:nodename |/ |// | . | .. | @  
  nodename: 選取此節點的所有子節點
                 / :從根節點選取
            //div: 選取所有div子元素,而不考慮他們的位置

                 . : 選取當前節點
                .. : 選取當前節點的父節點
               @ : 選取屬性

用法舉例: 

Nodename//div:選取所有屬於nodename元素的後代的div元素,不管在nodename之後的任意位置;

    /article/div[1]:選取屬於article子元素的第一個div元素

/article/div[last()]:選取屬於article子元素的最後一個div元素

/article/div[last()-1]:選取屬於article子元素的倒數第二個div元素

//@class :選取所有名爲class的屬性;

//div[@lang]:選取所有擁有lang屬性的div元素

//div[@lang=“eng”]:選取所有lang屬性爲eng的div元素

/div/*:選取屬於div元素的所有子節點

//* :選取所有元素

//div[@*]:選取所有帶屬性的title元素

/div/a|//div/p :選取所有div元素的a和p元素

//span|//ul :選取文檔中的span和ul元素

Article/div/p|//span :選取所有屬於article元素的div元素的p元素以及文檔中的所有的span元素;

      
     2.2 Xpath語法中的謂語用來查找某個特定的節點或者包含某個指定值的節點,謂語被嵌套在方括號內;

 

  • 3.使用技巧

    3.1:"*" 通配符,他可以匹配任何元素節點;
    3.2:/text()可以獲取標籤中的文字信息
    3.3:結果爲列表的數據結構,可以通過切片獲取字符串數據結構。
    3.4:遇到相同的字符開頭的多個標籤,相同時爬取時,不需要構造多個Xpath 路徑,通過starts-with(@屬性名稱,屬性字符相同的部分)便可獲取多個標籤內容;

 用法舉例: 
    
<li class = "tag-1">需要的內容1</li>
     <li class = "tag-1">需要的內容2</li>
     <li class = "tag-1">需要的內容3</li>

    獲取內容:選取所有class屬性爲tag的div元素
    Contents = selector.xpath('//li[starts-with(@class,"tag")]/text()')  
    for content in Contents:
         print(content)
   # starts-with() 可獲取類似標籤的信息
     3.5:當遇到標籤套標籤情況時:
    用法舉例:
  
<div class = “red”>需要的內容1
       <h1>需要的內容2</h1>
   </div>
    #相同時爬取內容可以通過 string(.)完成;

    #選取所有class屬性爲red的div元素;
     from lxml import etree
     html2 = '''
     <div class = "red"> 需要的內容1
         <h1>需要的內容2</h1>
     </div>
       '''
       selector  = etree.HTMl(html2)
       content1 = selector.Xpath("//div[@class = "red"]")[0]
       content2 = selector.Xpath('string(.)')
       print(content2)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章