まず、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)