以下のエディターは、Python クローラーの xlml 解析ライブラリ (総合的な理解) に関する記事をお届けします。編集者はこれがとても良いと思ったので、参考として共有します。編集者をフォローして一緒に見てみましょう
1.Xpath
XQuery と xpoint はどちらも xpath 式に基づいて構築されています
2. ノード
parent (親)、child (子)、brother (兄弟)、ancestor (祖先)、descendant (子孫)
3.ノードの選択
パス式
式 | 説明 | パス式 | 結果 |
ノード名 | このノード上のすべての子ノードを選択します | bookstore | のすべての子ノードを選択します本屋要素 |
/ | ルートノードから選択 | /bookstore | ルート要素bookstoreを絶対パスとして選択 |
// | 選択したノードに一致する現在のノードから選択位置に関係なく、ドキュメントを選択します | //book | ドキュメント内の位置に関係なく、すべての本の子要素を選択します |
。 | 現在のノードを選択します | bookstore//book | 書店の子孫を選択します |
.. | 現在のノードの親ノードを選択します | ||
@ | 属性を選択 | //@lang | lang | という名前の属性をすべて選択します
述語
述語は、特定のノードまたは指定された値を含むノードを検索するために使用されます
述語は角括弧内に埋め込まれます結果 | |
本屋の子要素に属する最初のbook要素を選択します | |
本屋の子要素に属する最後のbook要素を選択します | |
書店の子要素に属する最後から2番目のbook要素を選択します | |
本屋要素の書籍要素をすべて選択し、価格値が 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> ''' # html=etree.HTML(text) #html对象,存储在地址中,有自动修正功能 # result=etree.tostring(html) #将html对象转化为字符串 html=etree.parse('hello.html') # result=etree.tostring(html,pretty_print=True) # print result print type(html) result= html.xpath('//li') print result print len(result) print type(result) print type(result[0]) print html.xpath('//li/@class') # 获取li标签下的所有的class print html.xpath('//li/a[@href="link1.html" rel="external nofollow" rel="external nofollow" ]') #获取li标签下href为link1的<a>标签 print html.xpath('//li//span') #获取li标签下所有的span标签 print html.xpath('//li[last()-1]/a')[0].text #获取倒数第二个元素的内容
以上がPython クローラーの xlml 解析ライブラリの包括的な理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。