> ## Documentation Index
> Fetch the complete documentation index at: https://docs.agentify.jp/llms.txt
> Use this file to discover all available pages before exploring further.

# Webスクレイピング実践ガイド

> PR TIMES の AI 関連ニュースを例に、公式ツールの Webスクレイピング設定と Agent 連携を説明します。

このガイドでは、PR TIMES の AI 関連ニュースページを例に、Agentify の公式ツール「Webスクレイピング」の使い方と設定ロジックを説明します。

<CardGroup cols={3}>
  <Card title="リンクを抽出" icon="link">
    一覧ページから対象記事の URL を正規表現で抽出します。
  </Card>

  <Card title="本文を取得" icon="file-lines">
    抽出した各記事ページからタイトル、本文、公開日を取得します。
  </Card>

  <Card title="ナレッジ化" icon="book-open">
    取得結果を Agent で整形し、ナレッジベースへ保存します。
  </Card>
</CardGroup>

## Webスクレイピングの基本ロジック

Webスクレイピングツールは、ツール画面から公式ツールとして作成・利用できます。典型的な利用シーンは、複数のタイトルやリンクを含む一覧ページから対象ページを抽出し、それぞれの詳細ページにある必要な情報を取得するケースです。

```text theme={null}
一覧ページの URL を入力
  -> 正規表現で対象リンクを抽出
  -> 抽出したリンク先を順番に取得
  -> 必要な項目をフィールドとして保存
  -> Agent で整形してナレッジベースに保存
```

<Frame>
  <img src="https://mintcdn.com/trendoinc/BbOCPJdxANbL_EDU/images/update-1-1/image1.png?fit=max&auto=format&n=BbOCPJdxANbL_EDU&q=85&s=d02b2ba7330585d48e916f9319b88e0a" alt="公式ツールの Webスクレイピングを選択する画面" width="3334" height="1704" data-path="images/update-1-1/image1.png" />
</Frame>

## 1. 新しいスクレイピングタスクを作成する

Agentify にログインし、左側メニューから「ツール」>「公式ツール」>「Webスクレイピング」を開きます。画面右上の「新規タスクの確認」から、新しいスクレイピングタスクを作成します。

<Frame>
  <img src="https://mintcdn.com/trendoinc/BbOCPJdxANbL_EDU/images/update-1-1/image2.png?fit=max&auto=format&n=BbOCPJdxANbL_EDU&q=85&s=aeff3548306e6111d1cea1c341320c2e" alt="Webスクレイピングタスクを新規作成する画面" width="3296" height="404" data-path="images/update-1-1/image2.png" />
</Frame>

## 2. スクレイピング設定

### 2.1 取得対象ページを設定する

まず、情報源となる Web ページの URL を決めます。この URL は、複数の記事タイトルやリンクを含む一覧ページである必要があります。

本ガイドでは、PR TIMES の AI キーワードページを例にします。

```text theme={null}
https://prtimes.jp/topics/keywords/AI
```

この URL を「取得 URL」に入力し、タスク名には後から識別しやすい名前を設定します。例として `prtimes-news` のような名前を付けます。入力後、「次へ」をクリックしてフィールド設定へ進みます。

<Frame>
  <img src="https://mintcdn.com/trendoinc/BbOCPJdxANbL_EDU/images/update-1-1/image3.png?fit=max&auto=format&n=BbOCPJdxANbL_EDU&q=85&s=403e15cebff775f8a876c0a59aef4fab" alt="PR TIMES の AI 関連ニュースページを取得 URL に設定する画面" width="3290" height="1654" data-path="images/update-1-1/image3.png" />
</Frame>

### 2.2 記事リンクを抽出する

最初のフィールドでは、一覧ページから取得対象の記事リンクを抽出します。対象 URL には多くのリンクが含まれるため、記事ページの URL パターンを確認し、正規表現で必要なリンクだけを絞り込みます。

<CardGroup cols={2}>
  <Card title="フィールド key" icon="key">
    `article_links` を設定します。正規表現で抽出した記事リンク一覧を表す key です。
  </Card>

  <Card title="フィールド説明" icon="tag">
    `Webページ` など、抽出内容が分かる説明を設定します。
  </Card>

  <Card title="フィールドタイプ" icon="globe">
    リンクを抽出するため、フィールドタイプは `Webページ` を選択します。
  </Card>

  <Card title="抽出ルール" icon="code">
    `getHtml`、`links`、`regex`、`all` を組み合わせて対象 URL を抽出します。
  </Card>
</CardGroup>

<Frame>
  <img src="https://mintcdn.com/trendoinc/BbOCPJdxANbL_EDU/images/update-1-1/image4.png?fit=max&auto=format&n=BbOCPJdxANbL_EDU&q=85&s=45180ee2a7f9aab7a57aa5c0c057b4d3" alt="スクレイピングフィールドを追加する画面" width="3268" height="1628" data-path="images/update-1-1/image4.png" />
</Frame>

記事 URL は `/main/html/rd/p/xxxxx.xxxxx.html` の形式を含むため、以下のルールを設定します。

```shell theme={null}
getHtml
links
regex=>https://prtimes\.jp/main/html/rd/p/\d+\.\d+\.html
all
```

<Frame>
  <img src="https://mintcdn.com/trendoinc/BbOCPJdxANbL_EDU/images/update-1-1/image5.png?fit=max&auto=format&n=BbOCPJdxANbL_EDU&q=85&s=5ceae9a1857c500e445d1ec029acfde8" alt="PR TIMES 記事リンクの URL パターンを確認する画面" width="3084" height="1028" data-path="images/update-1-1/image5.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/trendoinc/E_YwLbxl5JlKgxBI/images/update-1-1/image6.png?fit=max&auto=format&n=E_YwLbxl5JlKgxBI&q=85&s=9356ca32496885a6301bfa9bffe5f05d" alt="記事リンク抽出ルールを設定する画面" width="3074" height="1030" data-path="images/update-1-1/image6.png" />
</Frame>

<Tip>
  `getHtml` の後に `regex` で記事リンクを抽出できない場合でも、ブラウザ上で対象リンクが表示されていることがあります。その場合は JS レンダリングを有効にしてから `links` を抽出してください。
</Tip>

<Frame>
  <img src="https://mintcdn.com/trendoinc/E_YwLbxl5JlKgxBI/images/update-1-1/image7.png?fit=max&auto=format&n=E_YwLbxl5JlKgxBI&q=85&s=46cc162b1bdf4969b9a18f55c194c91c" alt="JS レンダリングを有効にする設定画面" width="3288" height="1654" data-path="images/update-1-1/image7.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/trendoinc/E_YwLbxl5JlKgxBI/images/update-1-1/image8.png?fit=max&auto=format&n=E_YwLbxl5JlKgxBI&q=85&s=14c0847ae48f5ce96c07c880ba433504" alt="JS レンダリング後にリンク抽出を確認する画面" width="2632" height="1054" data-path="images/update-1-1/image8.png" />
</Frame>

### 2.3 記事ページ内のフィールドを取得する

`article_links` のフィールドタイプを `Webページ` にすると、リンク先ページに対して追加フィールドを設定できます。「Webページ」の横にある「取得」をクリックし、記事詳細ページから必要な情報を取得します。

<Frame>
  <img src="https://mintcdn.com/trendoinc/E_YwLbxl5JlKgxBI/images/update-1-1/image9.png?fit=max&auto=format&n=E_YwLbxl5JlKgxBI&q=85&s=db3de94fe7c9a5ad6bcb11e958fdabe6" alt="Webページフィールドの取得ボタンをクリックする画面" width="3314" height="1670" data-path="images/update-1-1/image9.png" />
</Frame>

ここでは、記事ページから以下の3項目を取得します。

* 記事タイトル
* 記事本文
* 公開日

「記事タイトル」を例にすると、`article_links` の下にフィールドを追加し、key を `title`、フィールド説明を `タイトル`、フィールドタイプを `string` にします。抽出ルールは XPath を使って設定します。

<Info>
  XPath や regex の書き方は、[クローラーマニュアル](/welcom/web_2) を参照してください。ページ構造の確認には AI を併用することもできます。
</Info>

<Frame>
  <img src="https://mintcdn.com/trendoinc/BbOCPJdxANbL_EDU/images/update-1-1/image10.png?fit=max&auto=format&n=BbOCPJdxANbL_EDU&q=85&s=8ff3ad24fb7aeef80ed5e5ca4cf026fb" alt="記事詳細ページのフィールドを追加する画面" width="3084" height="1050" data-path="images/update-1-1/image10.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/trendoinc/BbOCPJdxANbL_EDU/images/update-1-1/image11.png?fit=max&auto=format&n=BbOCPJdxANbL_EDU&q=85&s=b1f2b913cffadacea3c3c5be5926f01c" alt="タイトル取得フィールドの具体設定画面" width="3242" height="1580" data-path="images/update-1-1/image11.png" />
</Frame>

<AccordionGroup>
  <Accordion title="記事タイトルの抽出ルール" icon="heading">
    | 項目        | 設定値        |
    | --------- | ---------- |
    | フィールド key | `title`    |
    | フィールド説明   | `ニュースタイトル` |
    | フィールドタイプ  | `string`   |

    ```shell theme={null}
    getHtml
    xpath=>//h1[@id='press-release-title']/text()
    get
    ```
  </Accordion>

  <Accordion title="記事本文の抽出ルール" icon="file-lines">
    | 項目        | 設定値                  |
    | --------- | -------------------- |
    | フィールド key | `press_release_body` |
    | フィールド説明   | `ニュース本文`             |
    | フィールドタイプ  | `string`             |

    ```shell theme={null}
    getHtml
    xpath=>//div[@id='press-release-body']/allText()
    get
    ```
  </Accordion>

  <Accordion title="公開日の抽出ルール" icon="calendar">
    | 項目        | 設定値            |
    | --------- | -------------- |
    | フィールド key | `published_at` |
    | フィールド説明   | `公開日`          |
    | フィールドタイプ  | `string`       |

    ```shell theme={null}
    getHtml
    xpath=>//time/text()
    get
    ```
  </Accordion>
</AccordionGroup>

すべてのフィールド設定が完了したら、「エクスポート設定」で連携する Agent を選択します。この Agent が取得内容を加工し、ナレッジベースへ保存します。

<Frame>
  <img src="https://mintcdn.com/trendoinc/BbOCPJdxANbL_EDU/images/update-1-1/image12.png?fit=max&auto=format&n=BbOCPJdxANbL_EDU&q=85&s=8e757288b84b6804f7e348aee52b0851" alt="スクレイピング結果を処理する Agent を選択する画面" width="3304" height="1746" data-path="images/update-1-1/image12.png" />
</Frame>

## 3. タスクを開始する

スクレイピングタスク一覧へ戻り、タスクを開始する前に定期取得の間隔を設定します。間隔は「分」「時間」「日」の単位で指定できます。設定後、「開始」をクリックするとタスクが実行されます。

実行後は、「取得リンク数」で対象ページが取得できているかを確認します。あわせて、連携先のナレッジベースに期待した形式で保存されているかも確認してください。

<Frame>
  <img src="https://mintcdn.com/trendoinc/BbOCPJdxANbL_EDU/images/update-1-1/image13.png?fit=max&auto=format&n=BbOCPJdxANbL_EDU&q=85&s=4fcf286b8f2feaafb40792ad67f6cda1" alt="スクレイピングタスクの定期取得間隔を設定する画面" width="2020" height="942" data-path="images/update-1-1/image13.png" />
</Frame>

<Frame>
  <img src="https://mintcdn.com/trendoinc/BbOCPJdxANbL_EDU/images/update-1-1/image14.png?fit=max&auto=format&n=BbOCPJdxANbL_EDU&q=85&s=01d1bd4bd628638c1355185e8a1a63d3" alt="スクレイピングタスクの実行結果を確認する画面" width="3278" height="544" data-path="images/update-1-1/image14.png" />
</Frame>

## 4. 連携 Agent の設計

スクレイピングでは、各記事ページから取得した `title`、`press_release_body`、`published_at` が key 名に対応する変数として Agent に渡されます。また、正規表現で抽出したリンク URL も変数として利用できます。

本ガイドでは、記事ごとに1つのナレッジベーススライスとして保存する構成を想定します。

<CardGroup cols={2}>
  <Card title="スライス本文" icon="file-lines">
    記事本文 `press_release_body` を保存します。
  </Card>

  <Card title="スライスタイトル" icon="heading">
    記事タイトル、URL、公開日を組み合わせて保存します。
  </Card>
</CardGroup>

この加工は、Agent のプランニング内で「定型回答」モジュールなどを使って整形し、その結果をナレッジベース保存モジュールへ渡す構成にできます。

<Frame>
  <img src="https://mintcdn.com/trendoinc/BbOCPJdxANbL_EDU/images/update-1-1/image15.png?fit=max&auto=format&n=BbOCPJdxANbL_EDU&q=85&s=3fc22df083de5d688c202776694cde88" alt="スクレイピング結果をナレッジベース保存用に整形する Agent 構成" width="3310" height="1696" data-path="images/update-1-1/image15.png" />
</Frame>

<Card title="インポート用テンプレート" icon="download" href="../クローラーテンプレート.txt">
  Agent プランニング画面でインポートできます。インポート後は「ナレッジベースに保存」モジュールの保存先を、自分のアカウントのナレッジベースへ変更してください。
</Card>

## 5. 結果を確認する

最後に、ナレッジベース内で取得した記事情報が想定通りに保存されているかを確認します。以下は保存結果の例です。

<Frame>
  <img src="https://mintcdn.com/trendoinc/BbOCPJdxANbL_EDU/images/update-1-1/image16.png?fit=max&auto=format&n=BbOCPJdxANbL_EDU&q=85&s=1465fdf48b915fd9102b23f0e7a191c3" alt="PR TIMES ニュースをナレッジベースに保存した結果" width="3276" height="790" data-path="images/update-1-1/image16.png" />
</Frame>
