Python3 [分析ライブラリXPath]

1. XPathの概要

  Webページの階層関係を分析するために、XPathの選択機能は非常に強力であり、非常にシンプルで明確なパス選択式を提供します。

さらに、文字列、数値、時間のマッチング、ノードとシーケンスの処理のための100以上の組み込み関数も提供します。

ほとんどすべての位置決めノードは、XPathを使用して選択できます。

公式サイト:https://www.w3.org/TR/xpath

 

1. XPathの共通ルール:

                             

 

2.基本的な使用

from lxml import etree 

text = '' ' 
<div> 
    <ul> 
        <li class = "one"> <a href="link1"> 1 </a> </ li> 
        <li class = "two"> <a href = "link2"> 2 </a> </ li> 
        <li class = "three"> <a href="link3"> 3 </a> </ li> 
        <li class = "four"> <a href = "link4"> 4 </a> </ li> 
        <li class = "five"> <a href="link5"> 5 </a> 
    </ ul> 
</ div> 

'' ' 
将文本Webサイトの型であり、修正全全 
HTML = etree。HTML(テキスト) 

Webページの構造の全体の補数、ファイルのオープンパスHTML etree.parse =( 'demo.html'、etree.HTMLParser())

を印刷(HTML) 

は、バイトとして、テキスト型にページを変換します
=結果etree.tostring(HTML) 

strのタイプに 
= result.decode結果(" UTF-8 " 

印刷(結果を)

1.選択に一致(すべてのノード)

from lxml import etree 


text = '' ' 
<div> 
    <ul> 
        <li class = "one"> <a href="link1"> 1 </a> </ li> 
        <li class = "two"> <a href = "link2"> 2 </a> </ li> 
        <li class = "three"> <a href="link3"> 3 </a> </ li> 
        <li class = "four"> <a href = "link4"> 4 </a> </ li> 
        <li class = "five"> <a href="link5"> 5 </a> 
    </ ul> 
</ div> 

'' ' 
将文本Webサイトの型であり、修正全全 
HTML = etree。HTML(テキスト) 

選択したコンテンツのマッチング 
結果= html.xpath(' // * ' 

を印刷(結果)

 

 

 

2.子ノード

from lxml import etree 


text = '' ' 
<div> 
    <ul> 
        <li class = "one"> <a href="link1"> 1 </a> </ li> 
        <li class = "two"> <a href = "link2"> 2 </a> </ li> 
        <li class = "three"> <a href="link3"> 3 </a> </ li> 
        <li class = "four"> <a href = "link4"> 4 </a> </ li> 
        <li class = "five"> <a href="link5"> 5 </a> 
    </ ul> 
</ div> 

'' ' 
将文本Webサイトの型であり、修正全全 
HTML = etree。HTML(テキスト) 

選択したコンテンツのマッチング 
結果= html.xpath(' //リー/ A ' 

を印刷(結果)

ここで、「/」は直接の子ノードを表し、「//」はすべての子孫ノードを表します

 

 

 3.親ノード

親ノード:「..」を使用します。親::を使用して親を表すこともできます

from lxml import etree 


text = '' ' 
<div> 
    <ul> 
        <li class = "one"> <a href="link1"> 1 </a> </ li> 
        <li class = "two"> <a href = "link2"> 2 </a> </ li> 
        <li class = "three"> <a href="link3"> 3 </a> </ li> 
        <li class = "four"> <a href = "link4"> 4 </a> </ li> 
        <li class = "five"> <a href="link5"> 5 </a> 
    </ ul> 
</ div> 

'' ' 
将文本Webサイトの型であり、修正全全 
HTML = etree。HTML(テキスト) 

選択したコンテンツのマッチング
#の属性は、親クラスの属性タグがLINK4ある 
= html.xpath(結果//a[@href="link4"]/../@class 

#を@表示 
属性result1 = html.xpath(' // a [@ href = "link4"] / parent :: * / @ class ' 

print (result)
 print(result1)

 

 

 

4.テキストの取得

from lxml import etree 


text = '' ' 
<div> 
    <ul> 
        <li class = "one"> <a href="link1"> 1 </a> </ li> 
        <li class = "two"> <a href = "link2"> 2 </a> </ li> 
        <li class = "three"> <a href="link3"> 3 </a> </ li> 
        <li class = "four"> <a href = "link4"> 4 </a> </ li> 
        <li class = "five"> <a href="link5"> 5 </a> 
    </ ul> 
</ div> 

'' ' 
将文本Webサイトの型であり、修正全全 
HTML = etree。HTML(テキスト) 

選択したコンテンツのマッチング
#の属性は、親クラスの属性タグLINK4のある 
結果= html.xpath(' // /テキスト()[のhref = "LINK4" @] ' 

を印刷(結果)

 

 

5.属性の複数値マッチング

from lxml import etree 


text = '' ' 
<div> 
    <ul> 
        <li class = "one"> <a href="link1"> 1 </a> </ li> 
        <li class = "two"> <a href = "link2"> 2 </a> </ li> 
        <li class = "three two"> <a href="link3"> 3 </a> </ li> 
        <li class = "four"> < a href = "link4"> 4 </a> </ li> 
        <li class = "five"> <a href="link5"> 5 </a> 
    </ ul> 
</ div> 

'' ' 
将文本转换是网页类型、是修复补全 
html = etree。HTML(テキスト) 

選択したコンテンツのマッチング(プロパティ、値@)が含ま 
結果= html.xpath(' //李[含まれています(@class、 "三")] / A /テキスト()' 

印刷(結果)

 

6.マルチ属性マッチング

 複数の属性がノードを決定するため、複数の属性を一致させる必要があります

from lxml import etree 


text = '' ' 
<div> 
    <ul> 
        <li class = "one"> <a href="link1"> 1 </a> </ li> 
        <li class = "two three" name = "item"> <a href="link2"> 2 </a> </ li> 
        <li class = "three two"> <a href="link3"> 3 </a> </ li> 
        <li class = "four"> <a href="link4"> 4 </a> </ li> 
        <li class = "five"> <a href="link5"> 5 </a> 
    </ ul> 
</ div > 

'' '
変換し、テキスト・ページ・タイプ、および修正補完 
HTML = etree.HTML(テキスト)

選択したコンテンツのマッチング(プロパティ、値@)が含ま 
= html.xpath(結果" //李[含まれています(@class、「スリー")および@ name =" item "] / a / text()' 

印刷(結果)

 

7.順番に選ぶ

from lxml import etree 


text = '' ' 
<div> 
    <ul> 
        <li class = "one"> <a href="link1"> 1 </a> </ li> 
        <li class = "two three" name = "item"> <a href="link2"> 2 </a> </ li> 
        <li class = "three two"> <a href="link3"> 3 </a> </ li> 
        <li class = "four"> <a href="link4"> 4 </a> </ li> 
        <li class = "five"> <a href="link5"> 5 </a> 
    </ ul> 
</ div > 

'' '
変換しテキストのページ・タイプ、および修正補体 
HTML = etree.HTML(テキスト)

選択されたコンテンツマッチング

#は最初一致リチウム 
結果1 = html.xpath(' //のLi [1] / A /テキスト()' 

最後に、カウントダウン2 
結果2 = html.xpath(' //李[最終() - 2] / A /テキスト()' 

最後 
result3 = html.xpath(" //李[最終()] / A /テキスト()' 

3未満。 
result4 = html.xpath(' //のLi [位置()<3。] / A /テキスト()' 


組み込み関数100は、http://www.w3school.com.cn/ xpath / xpath_functions.asp 
印刷(結果1)
 印刷(結果2)
 印刷(結果3)
 印刷(結果4)

 

 

8.ノード軸の選択

 

 

 

 

タグLINK4親クラスの属性の属性

おすすめ

転載: www.cnblogs.com/Crown-V/p/12725652.html