いくつか前者は美しいスープも練習の多くの例を実施し、いくつかの簡単な操作を書いて、今日lxmt新しいPythonライブラリの導入は、lxmtはああデータをクロール行うことができます
lxmlのは何ですか
lxmlのは、HTMLやXML構文解析をサポートしてのpythonの解析ライブラリですXPathの分析方法をサポートし、分析効率が非常に高いです。
lxmlの研究資料:https://lxml.de/
XPathは何ですか
XPathは、我々はすべて知っていると信じて、それが右側にあるときの測位方法は、XPath自動テストを行っているがあります。
XPathの、XMLパス言語、つまりXMLパス言語の完全な名前は、それがXMLドキュメントの言語で見つけた情報です。もともとは、XML文書を検索するために使用されたが、それはまた、HTMLドキュメントを検索するには適用されます。XPathの選択はまた、ほぼ、文字列、数値、およびマッチング・ノード、シーケンス処理時間のために100以上の組み込み関数を提供し、それは非常に簡潔な表現の経路選択を提供し、非常に強力です私たちがターゲットにしたいすべてのノード、あなたが選択するために、XPathを使用することができます。
XPathの共通のルール
表現 | 説明 |
ノード名 | このノードのすべての子ノードを選択します |
/ | 現在のノードから選択された直接の子ノード |
// | 選択したノードから現在のノードの子孫 |
。 | 現在のノードを選択します |
。.. | 現在のノードの親を選択します |
@ | [プロパティ]を選択します |
* | ワイルドカードは、すべての要素ノードおよび要素名を選択 |
@ * | すべてのプロパティを選択します |
[プロパティ@] | 指定された属性を持つすべての要素を選択します |
[プロパティ= '値' @] | 与えられた特定の属性値を持つすべての要素を選択します |
XPathの研究資料:https://www.w3.org/TR/xpath/all/
lxmlのインストール
Windowsのインストール
#インストールLxmt ピップをlxmlのインストール #を使用すると、障害が続く場合は、libxml2のライブラリ情報が不足していることを選択し、車輪のインストール #https://www.lfd.uci.edu/~gohlke/pythonlibs/ Pythonのlxmlのバージョンの対応するバージョンダウンロード ダウンロードコンテンツをインストールピップを(lxmlのバージョン)
Liunxのインストール
#ピップをインストールすることで lxmlのインストールPIP
使用するlxmlのシンプル
< HTML > < ボディ> < DIV > < UL > < 李クラス= "項目-0" > < HREF = "link1.html" >パイソン</ A > </ 李> < リチウムのクラス= "項目1" > < HREF = "link2.html" >パイソン爬虫</ A > </ 李> < リチウムのクラス= "項目2" > <HREF = "link3.html" > Pythonのテスト </ A > </ 李> < リチウムのクラス= "項目-3" > < HREF = "link4.html" >パイソン全栈</ A > </ 李> </ UL > </ DIV > </ ボディ> </ HTML >
上記の単純なHTMLの簡単なことでlxml.etreeで理解します
リーのためのコンテンツのタグに対応するコンテンツは、XPathによって見出さLXML最初解析されたHTML etreeを使用して
1、すべてのノードは、Liを取得します
#导入lxmlの から lxmlのインポートetree #解析 HTML = etree.HTML(テキスト) = html.xpath(結果' //リチウム' ) 代码结果: [ <0x3a0a8c8の要素LI>、<0x3a0a888の要素のLI>、<素子L 0x3a0a988で>、<0x3a0a9c8の要素LI>]
ここでは、直接添字によって、オブジェクトの一つを取り出すことがあれば、各要素は、要素オブジェクトであるリストの形式を、見ることができます
2、子ノードを取得
#のインポートlxmlの から lxmlのインポートetreeの #の構文解析 HTML = etree.HTML(テキスト) #をリー内のすべてのタグを検索 = html.xpath(結果' //リー/ A ' ) コードの結果を: [ <李ATは、Elementを0x3a0a8c8> <素子L 0x3a0a888に>、 <0x3a0a988の要素LI>、<0x3a0a9c8の要素のLI>]
3、ラベル李の下にあるすべてのテキストを取得
#のインポートlxmlの から lxmlのインポートetreeの #の構文解析 HTML = etree.HTML(テキスト) #テキストの全文で得られた() 結果= html.xpath(' //リー/ A /テキスト()' ) :コードの結果 [ 「今日の天気を「」天気は明日「」明日の天気の翌日「」週末の天気" ]
4、物件取得
#のインポートlxmlの から lxmlのインポートetreeの #の構文解析 HTML = etree.HTML(テキスト) #は、属性値によって、対応する属性を取得し、@ = html.xpath(結果' //リー/ A / @ hrefのを' ) コード結果: [ " link1.html ' ' link2.html ' ' link3.html ' ' link4.html " ]