[Pythonの爬虫類] XPathは

まず、XMLは何ですか

  1、定義:拡張マークアップ言語
  2、特性:XMLは自己記述半構造化データ構造です。
  図3に示すように、アクション:XMLは、主に、送信データに使用されるように設計します。彼はまた、設定ファイルとして使用することができます。

第二に、XMLおよびHTMLの違い

  1、異なる構文を必要とする:XML構文の要件をより厳しいです。

    (1)HTML非感受性、XML判別。
    (2)HTMLテールタグは時々省略してもよいです。XMLは、最初入れ子構造に厳密に従って、任意のラベルを省略しません。
    (3)のみ自閉症XMLタグに(コンテンツなしのタグ、属性のみ。)<a class='abc'/>
    (4)HTML属性名、属性値なしで使用することができます。xml属性の値はバンドなければなりません。  
    xml属性で(5)は引用符で囲む必要があり、HTMLは引用されないことがあります。

  2、異なる役割

    htmlのより良い表示データと表示データに主に設計されています。
    主な目的は、転送データに設計されたXMLを使用することです

  図3に示すように、異なるタグ:XMLタグは、固定されていないHTMLタグが固定され、カスタマイズすることができません。

三、XPathの

  1. XPathは何ですか?

    XPathは、スクリーニングHTMLまたはXMLページ要素文法であります

  2、XMLおよびHTMLいくつかの名詞

    要素、タグ、属性、コンテンツ

  3、XML 2つの分析方法

    DOMとSAX

  4、XPathの文法

    (1)ノードを選択します

        ノード名---このタブとその単語ラベルのすべてを選択します。
        / ----ルートから開始を選択します。
        // ----場所に関係なく、任意のノードから開始。
        //ブック---ブック位置に関係なく、XMLブックにすべてのタグを削除します。
        .----現在のノードが探し始める
        親ノードから..----
        プロパティ]を選択--- @
        ---)(テキストのコンテンツを選択してください

    (2)述語:果たした役割を定義し、コンテンツは、彼の前に定義されています。

        []一般エレメントまたはタグを定義するために使用されるユーザを定義するために、裏面に書かれ誰。

        //ブック[クラス@ = 'ABC']

        一般的な述語:
          [@class]があり----選択クラス
          [クラス@ = 'ABC'] --- ABCクラスの属性ノードを選択します。
          [含まれています(@ hrefの'百度 ')] --- Baiduはhref属性が含まれているラベルを選択
          ---最初に選択し、[1]を
          [最後の()] ---を選択し、最後の
          [最後の() - 1] - -セレクト最後から二番目の
          [位置()> 2] ---最初の二つをスキップ。
          ブック[価格> 30]

    (3)ワイルドカード

        * ---任意のノードに一致する
        @ * ---任意のプロパティに一致します

    (4)複数のパスを選択

      | XPathは左右---選択---とコンテンツで

  5、lxmlのモジュールHTMLおよびXML ---- Pythonの処理モジュール。

    (1)は、文字型のXML解析を作成します

1  から lxmlのインポートetree
 2テキスト= '' ' 
3      HTMLページのコンテンツ
 。4  ' '' 
5ツリー= etree.HTML(テキスト)--- 戻り値は、ターゲット要素である
 。6  要素オブジェクトは、XPathメソッドを有する、式のXPathによってフィルタコンテンツへ。
7  タグのリチウムclass属性項目-1含量以下を選択
。8 a_contents = tree.xpath(' //のLi [クラス@ = "項目1"] / /テキスト()' 。9  
10  素子文字列オブジェクト道なり
 。11  html_str = etree.tostring(木、pretty_print =真).decode( 'UTF-8')
12で を印刷(タイプ(html_str))

      #elmentオブジェクトを画面に入れたXPath、戻り値はリストです。
      #xpath最後の式は、要素(タグ)リストであるすべての要素elment
      #xpath最後の式は、プロパティリストのすべての属性の文字列であり、
      最後の式は、コンテンツリストの文字列のすべての内容は#xpath

    (2)XMLまたはHTMLファイルを解析      

lxmlのインポートetree 

構文問題あれば解決するには、XMLの方法に従い、解析方法、それはエラーになります。
= etree.parse HTML(' demo.html ' 

#の印刷(HTML)#_ ElementTreeの 
li_texts = html.xpath(' //リー/ A /テキスト()' 

印刷(li_texts)

おすすめ

転載: www.cnblogs.com/Tree0108/p/12074912.html