XPath Selectorの詳細、scrapyフレームワークの下でxpathセレクタの紹介

8138 ワード

XPath Selectorの詳細
Scrapy爬虫参考ブログXPathは、XML、HTML、XHTMLドキュメントで情報を検索する言語です.(以下XMLでの操作はHTMLで実行可能)
XPathとは?
1:XPathパス式を使用してXMLドキュメントをナビゲートする2:XPathは標準関数ライブラリを含む3:XPathはXSLTの主要要素である4:XPathはW 3 C標準である
XPathパス式
XPathは、XMLドキュメント内のノードまたはノードセットを選択するためにパス式を使用します.これらのパス式は、通常のコンピュータファイルシステムで見られる式とよく似ています.
XPath標準関数
XPathには100個を超える関数が含まれています.これらの関数は、文字列値、数値、日付と時間の比較、ノードとQName処理、シーケンス処理、論理値などに使用されます.
ノード
XPathには、要素、属性、テキスト、ネーミングスペース、処理命令、注釈、ドキュメント(ルート)ノードの7種類のノードがあります.XMLドキュメントはノードツリーとして扱われる.ツリーのルートは、ドキュメントノードまたはルートノードと呼ばれます.
<body>
   <title lang="en">liming</title>
   <author>zhaosi</author>
   <year>25</year>
   <price>25</price>
</body>
<body> (    )
<author>zhaosi</author> (    )
lang="en" (    )

基本値または称原子値
基本値は、親なしまたは子なしのノードです.例えばzhaosi,“en”
プロジェクト(Item)
プロジェクトは基本値またはノードです.
ノード関係
各要素および属性には親があり、body要素はtitle、author、year、price要素の親です.要素ノードには、0個、1個または複数のサブがあります.上記の例では、title、author、year、price要素はbody要素の子である.同じ親を持つノード、title、author、year、price要素は同胞です.父と父の父は先辈、息子と息子の息子は后代と言います.
XPath構文
XPathは、XMLドキュメントのノードまたはノードセットを選択するためにパス式を使用します.ノードはパス(path)またはステップ(steps)に沿って選択されます.
≪インスタンス|Instance|emdw≫
<?xml version="1.0" encoding="UTF-8"?>
 
<bookstore>
 
<book>
  <title lang="eng">Harry Potter</title>
  <price>29.99</price>
</book>
 
<book>
  <title lang="eng">Learning XML</title>
  <price>39.95</price>
</book>
 
</bookstore>

ノードの選択
XPathは、パス式を使用してXMLドキュメントでノードを選択します.ノードはパスまたはstepに沿って選択されます.次に、最も有用なパス式を示します.
式#シキ#
説明
nodename
このノードのすべてのサブノードを選択
/
ルートノードから選択
//
選択に一致する現在のノードからドキュメント内のノードを選択し、その位置を考慮しない
.
現在のノードを選択

現在のノードの親を選択
@
属性の選択
次の表に、パス式と式の結果を示します.
パス式
説明
bookstore
bookstore要素のすべてのサブノードを選択
/bookstore
ルート要素bookstoreを選択します.注記:パスが正のスラッシュ(/)から始まる場合、このパスは常にエレメントへの絶対パスを表します.
bookstore/book
book storeに属するサブエレメントのすべてのbookエレメントを選択
//book
ドキュメント内のすべてのbookサブエレメントを選択します.
bookstore//book
book store要素の子孫に属するすべてのbook要素を選択し、book storeの下にある場所にかかわらず
//@lang
langという名前のすべてのプロパティを選択
述語
述部は、特定のノードまたは指定した値を含むノードを検索するために使用されます.述語は括弧で囲まれています.次の表に、述部を含むパス式と、式の結果を示します.
パス式
説明
/bookstore/book[1]
book storeサブエレメントに属する最初のbookエレメントを選択
/bookstore/book[last()]
book storeサブエレメントに属する最後のbookエレメントを選択
/bookstore/book[last()-1]
book storeサブエレメントに属する最後から2番目のbookエレメントを選択
/bookstore/book[position()<3]
一番前のbook store要素に属する2つのサブ要素のbook要素を選択
//title[@lang]
langという名前のプロパティを持つtitle要素をすべて選択
//title[@lang=‘eng’]
すべてのtitle要素を選択し、engのlangプロパティを持つ
/bookstore/book[price>35.00]
book store要素のすべてのbook要素を選択し、price要素の値は35.00より大きい必要があります.
/bookstore/book[price>35.00]//title
book store要素のbook要素のすべてのtitle要素を選択し、price要素の値を35.00より大きくする必要があります.
不明なノードの選択
XPathワイルドカードは、未知のXML要素を選択するために使用できます.
ワイルドカード
説明
*
任意の要素ノードを一致させる
@*
任意のアトリビュートノードを一致させる
node()
任意のタイプのノードに一致
次の表に、パス式とその結果を示します.
パス式
結果
/bookstore/*
bookstore要素のすべてのサブ要素を選択
//*
ドキュメント内のすべての要素を選択
//title[@*]
属性付きtitle要素をすべて選択
複数のパスを選択
パス式で「|」演算子を使用すると、複数のパスを選択できます.次の表に、パス式とその結果を示します.
パス式
結果
//book/title |//book/price
book要素のすべてのtitleとprice要素を選択
//title |//price
ドキュメント内のすべてのtitle要素とprice要素を選択
/bookstore/book/title |//price
book store要素に属するbook要素のすべてのtitle要素と、ドキュメント内のすべてのprice要素を選択します.
XPath演算子
以下に、XPath式で使用できる演算子を示します.
演算子
説明
≪インスタンス|Instance|emdw≫
戻り値
|
2つのノードセットの計算
//book |//cd
bookとcd要素を持つすべてのノードセットを返します.
+
加算
6 + 4
10
-
減算
6 - 4
2
*
乗算#ジョウサン#
6 * 4
24
div
除算
8 div 4
2
=
に等しい
price=9.80
priceが9.80の場合、trueが返されます.priceが9.90の場合、falseが返されます.
!=
等しくない
price!=9.80
priceが9.90の場合、trueが返されます.priceが9.80の場合falseが返されます
<
より小さい
price<9.80
priceが9.00の場合、trueが返されます.priceが9.90の場合、falseが返されます.
<=
以下
price<=9.80
priceが9.00の場合、trueが返されます.priceが9.90の場合、falseが返されます.
>
より大きい
price>9.80
priceが9.90の場合、trueが返されます.priceが9.80の場合、falseが返されます.
>=
以上
price>=9.80
priceが9.90の場合、trueが返されます.priceが9.70の場合、falseが返されます.
or
または
price=9.80 or price=9.70
priceが9.80の場合、trueが返されます.priceが9.50の場合、falseが返されます.
and

price>9.00 and price<9.90
priceが9.80の場合、trueが返されます.priceが8.50の場合falseが返されます.
mod
除算の剰余を計算する
5 mod 2
1
本文はドキュメントの菜鳥の教程を参考にします