ホームページ  >  記事  >  バックエンド開発  >  Python クローラーの xlml 解析ライブラリの包括的な理解

Python クローラーの xlml 解析ライブラリの包括的な理解

黄舟
黄舟オリジナル
2017-08-08 11:33:081643ブラウズ

以下のエディターは、Python クローラーの xlml 解析ライブラリ (総合的な理解) に関する記事をお届けします。編集者はこれがとても良いと思ったので、参考として共有します。編集者をフォローして一緒に見てみましょう

1.Xpath

XQuery と xpoint はどちらも xpath 式に基づいて構築されています

2. ノード

parent (親)、child (子)、brother (兄弟)、ancestor (祖先)、descendant (子孫)

3.ノードの選択

パス式

という名前の属性をすべて選択します
説明 パス式 結果
ノード名 このノード上のすべての子ノードを選択します bookstore のすべての子ノードを選択します本屋要素
/ ルートノードから選択 /bookstore ルート要素bookstoreを絶対パスとして選択
// 選択したノードに一致する現在のノードから選択位置に関係なく、ドキュメントを選択します //book ドキュメント内の位置に関係なく、すべての本の子要素を選択します
現在のノードを選択します bookstore//book 書店の子孫を選択します
.. 現在のノードの親ノードを選択します

@ 属性を選択 //@lang lang

述語

述語は、特定のノードまたは指定された値を含むノードを

検索するために使用されます

述語は角括弧内に埋め込まれます

パス式結果/bookstore/book[ 1]本屋の子要素に属する最初のbook要素を選択します/bookstore/book[last()]本屋の子要素に属する最後のbook要素を選択します/bookstore/ book[last()-1]書店の子要素に属する最後から2番目のbook要素を選択します/bookstore/book[position()3cb1896880a8f08c08f1fd78fdc3a18b35.0]の値を持つlang属性を持つすべてのtitle要素を選択します本屋要素の書籍要素をすべて選択し、価格値が 35.0 より大きい

不明なノード (ワイルドカード) を選択します

* 任意の要素ノードと一致します

@* 任意の属性ノードと一致します

node () 任意のタイプのノードに一致します

4.lxml の使用法


#!/usr/bin/python
#_*_coding:utf-8_*_

from lxml import etree

text='''
<p>
 <ul>
  <li class="item-0"><a href="link1.html" rel="external nofollow" rel="external nofollow" >first item</a></li>
  <li class="item-1"><a href="link2.html" rel="external nofollow" >second item</a></li>
  <li class="item-inactive"><a href="link3.html" rel="external nofollow" >third item</a></li>
  <li class="item-1"><a href="link4.html" rel="external nofollow" >fourth item</a></li>
  <li class="item-0"><a href="link5.html" rel="external nofollow" >fifth item</a>
 </ul>
</p>
  &#39;&#39;&#39;

# html=etree.HTML(text) #html对象,存储在地址中,有自动修正功能
# result=etree.tostring(html) #将html对象转化为字符串

html=etree.parse(&#39;hello.html&#39;)
# result=etree.tostring(html,pretty_print=True)
# print result
print type(html)
result= html.xpath(&#39;//li&#39;)
print result
print len(result)
print type(result)
print type(result[0])
print html.xpath(&#39;//li/@class&#39;) # 获取li标签下的所有的class
print html.xpath(&#39;//li/a[@href="link1.html" rel="external nofollow" rel="external nofollow" ]&#39;) #获取li标签下href为link1的<a>标签
print html.xpath(&#39;//li//span&#39;) #获取li标签下所有的span标签
print html.xpath(&#39;//li[last()-1]/a&#39;)[0].text #获取倒数第二个元素的内容

以上がPython クローラーの xlml 解析ライブラリの包括的な理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。