Xpath
XPathは、XMLドキュメントの言語での発見情報であり、XML文書内の要素と属性をナビゲートするために使用され、それはまた、HTML文書で作業に使用することができます。多くの場合、情報抽出のページを見つけるために、XPathを使用してPythonの爬虫類の開発、XPathのが非常に重要。
1、XPathノード
Xpathでは、XML文書をツリーのノードとして扱われ、ノードの7種類があります。
- 要素
- プロパティ
- テキスト
- 名前空間
- 処理の手順
- 注記
- ドキュメント(ルート)ノード
例を見てください:
<xml version="1.0" encoding="ISO-8859-1">
<classroom>
<student>
<id>1001</id>
<name lang="en">marry</name>
<age>20</age>
<country>China</country>
</student>
</classroom>
<classroom>
文書ノードは、
<id>1001</id>
要素ノードである
lang="en"
属性ノードである
marry
テキストノードである
ノードの関係は、親(親)、子供(子供)、同胞(兄弟)、先祖(祖先)、子孫(子孫)が含まれます。
2、XPath構文
パス式
Xpathの使用パス式は、 XML文書またはノードのセット内のノードを選択します。ノードは、選択されたパスへのパスに沿ってステップまたは手順です。
一般的なパス式:
表現 | 説明 |
---|---|
ノード名 | 選択したノードのすべての子ノード |
/ | ルートノードから選択します。 |
// | ノードの任意の場所を選択します |
。 | 現在のノードを選択します |
。.. | 現在のノードの親を選択します |
@ | [プロパティ]を選択します |
例を見てください:
<xml version="1.0" encoding="ISO-8859-1">
<classroom>
<student>
<id>1001</id>
<name lang="en">marry</name>
<age>20</age>
<country>China</country>
</student>
<student>
<id>1002</id>
<name lang="en">jack</name>
<age>25</age>
<country>USA</country>
</student>
</classroom>
結果を実現 | パス式 |
---|---|
教室のすべての子ノードを選択します | 教室 |
教室のルート要素を選択します | /教室 |
学生の要素教室の全てに属するサブ要素を選択します | 教室/学生 |
文書に関係なく、自分の位置を、全てsudentサブ要素を選択します | //学生 |
教室の生徒の要素に属するすべての要素の子孫を選択し、それらが教室の下に配置されているどのような位置に関係なく、 | 教室//学生 |
LANGという名前のプロパティをすべて選択 | // @ LANG |
述語
特定のノードまたは述語指定した値を含むノードを選択します。
使用ブラケット述語を表します[]:
結果を実現 | パス式 |
---|---|
第一副教室の生徒の要素に属する要素を選択 | /教室/学生[1] |
教室の生徒の要素に属する最後の子要素を選択します | /教室/学生[最後の()] |
第二教室の生徒の要素の逆数に属するサブ要素を選択します | /教室/学生[最後の() - 1] |
教室のサブ要素を選択して最初の2つの要素のstudaent | /教室/学生[位置()<3] |
lang属性名を持つすべての要素を選択します | //名前[@lang] |
すべてのlang属性名の要素を選択し、「EN」の値を持っているの | //名[@ LANG = 'EN'] |
すべての教室要素studnet要素を選択し、要素がその年齢20の値よりも大きいです | /教室/学生[> 20歳] |
要素名の要素の学生の教室のすべての要素を選択し、その年齢の要素の値が20より大きい | /教室/学生[年齢> 20] /名前 |
通配符
- ワイルドカード「*」は、未知の要素と一致します
- 「|」複数のパスを選択し、ワイルドカードを使用します
結果を実現 | パス式 |
---|---|
すべての子要素の教室の要素を選択します | /教室/* |
文書内のすべての要素を選択します | // * |
name属性を持つすべての要素を選択します | //名[@*] |
すべての要素の名前や年齢構成要素の学生の要素を選択します | //学生/名| //学生/年齢 |
すべての要素の名前、年齢の教室要素に属する学生の要素を選択して、すべての要素を文書化 | /教室/学生/名| //年齢 |