メインコンテンツにスキップ

XPath基礎編 - 1.クローラーとxpathの関係とは?

2週間以上前に更新

1. Web クローラーと XPath の関係とは?

Web クローラー(Web Scraper)は、Web上のページを自動的に巡回し、データを収集するプログラムです。

その際、収集対象の HTML から「どの要素を取得するか」を指定する方法として、XPath が使われます。


2. XPath の役割

XPath は、HTML / XML 内の要素・属性・テキストを正確に特定する言語です。

クローラーは XPath を使って:

  • タイトル

  • 価格

  • リンク

  • 画像
    など必要な部分だけを抽出できます。

例(商品名を取る):

//div[@class='product-name']/text()

3. なぜ XPath がクローラーで重要なのか?

  • HTML 構造が複雑でも狙った要素にピンポイントでアクセスできる

  • CSS セレクタより柔軟な条件指定ができる

  • テキスト内容、属性値、位置、部分一致など高度な抽出が可能

  • Scrapy / Octoparse / Puppeteer など幅広いツールで標準採用


4. よく使う XPath 基本構文(Web向け)

構文

意味

//

文書全体から検索

//div

.

現在のノード

.//a

@属性名

属性を選択

@href

text()

テキストを取得

//h1/text()

contains()

部分一致検索

contains(@class,'btn')


5. よく使う XPath 関数(Web クローラーで必須)

  • text()

    ノードのテキストを取得

//h1/text()

  • contains()

    部分一致検索
    HTML はクラスが複数なので重宝する

//a[contains(@class,'active')]

  • starts-with()

//h1[starts-with(text(),'Page')]

  • normalize-space()

    余分な空白を削除(実務で最重要)

//div[normalize-space(text())='ログイン']

6. XPath の実例(HTML 版)

サンプル HTML:

<ul>
<li class="item fruit">Apple</li>
<li class="item">Banana</li>
<li class="item fruit">Orange</li>
</ul>

① 「item を含む li すべて」:

//li[contains(@class,'item')]

② 「text が 'Apple' の li」:

//li[text()='Apple']

③ 「fruit を含む li のテキストを取得」:

//li[contains(@class,'fruit')]/text()

7. XML を例にした基本 XPath の書き方

<books>
<book id="1">
<title>Harry Potter</title>
</book>
</books>

id=1 の title を取得する XPath:

/books/book[@id='1']/title

8. XPathを書くには

① Chrome DevTools で目的の要素を右クリック
→ 「検証」
→ Elements パネルで該当ノードを表示

Ctrl + F で検索バーを開く

③ XPath を入力する
→ マッチした要素がハイライトされる
→ 0/1/2 と一致数が表示されるので検証が簡単

mceclip0.png

続きを読む

こちらの回答で解決しましたか?