1. ホーム
  2. スクリプト・コラム
  3. パイソン

PythonクローラーXPathの構文を1つの記事で紹介

2022-01-27 19:56:54

この記事はWeChat: "アルゴリズムとプログラミングの美学"から転載したものです。

I. 問題の説明

1. XPath とは何ですか?

xpath はクラスで XML HTML で使用できる、ドキュメント内の情報を検索するための言語です。 XML HTML 要素や属性が文書内で走査されると、XPath はパス表現を用いてそれらを選択します。 XML 文書内のノードやノードの集合を選択するために、パス表現を使用します。これらのパス表現は、通常のコンピュータのファイルシステムで見られる表現と非常によく似ています。

II. 解決方法

1. XPathの構文

学習するには xpath を理解する必要があります。 html というノードがあります。

<div>
     <ul>
          <li class="item-0"><a href="link1.html" rel="external nofollow" >first item</a></li& gt;
          <li class="item-1"><a href="link2.html" rel="external nofollow" >second item</a></li& gt;
          <li class="item-inactive"><a href="link3.html" rel="external nofollow" >third item</a>& lt;/li>
          <li class="item-1"><a href="link4.html" rel="external nofollow" >fourth item</a>& lt;/li& gt;
          <li class="item-0"><a href="link5.html" rel="external nofollow" >fifth item</a> # Note that there is a missing a </li> closing tag
      </ul>
  </div>



上記はインターネットで見つけた適当なhtmlテキストですが、divタグの下にulタグ、ulタグの下にliタグがあり、htmlタグが木のように一段になっていることが観察できます。例えばある人の位置を知るには、まずその人が中国にいると判断し、次に省、市、近隣と判断し、最終的にその人を見つけることになるのです。

<テーブル

表現方法

説明

ノードネーム

このノードのすべての子を選択する bookstore bookstore の下のすべての子を選択する

/

一番上にある場合は、ルートノードから選択されていることを意味します。それ以外の場合は、あるノードの下にあるノードを選択します /bookstore は、ルート要素の下にあるすべての bookstore ノードを選択します

//

グローバルノードからノードを選択、任意の場所 //book グローバルノードからすべてのブックノードを検索

@

ノードの属性を選択する //book[@price] price属性を持つすべてのブックノードを選択する

.

現在のノード

テキスト()

タグの中のテキストを取得する

兄弟タグは、以下のように使用することができます。 li[1] , li[2] , li[3] を取得する方法は

2. lxml ライブラリ

を簡単に紹介します。 lxml ライブラリは、次に使用します。

lxml は、H TML / XML パーサーの主な機能は、どのようにパースして HTML / XML のデータを使用します。

lxml レギュラーと同じくC言語で実装され、高性能な PythonHTML / XML パーサーを使用すると、以前に学習した XPath 構文を使用して、特定の要素やノード情報をすばやく見つけることができます。

3. 実践例

ランダムなサイトをクロールして、そのサイトが見つけた html テキスト

以下に示すとおりです。

を見つけるには title href であり、よく見ると、パスが

//div[@id="resultList"]/div[@class="el"]/p/span/a/@title
//div[@id="resultList"]/div[@class="el"]/p/span/a/@href

以下のように実行されます。

III. 結論

Xpath は、クローラーでデータを抽出する一般的な方法のひとつで、通常の xpath 課題は、データがどこにあるのかを正確に判断することです。

PythonクローラーXPath構文についての記事は以上となります。PythonクローラーXPath構文については、Script Houseの過去記事を検索いただくか、引き続き以下の記事をご覧ください。