10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AIに関する記事を書こう!
Qiita Engineer Festa20242024年7月17日まで開催中!

Difyのワークフローでスクレイピングしてみる

Last updated at Posted at 2024-07-08

DifyでとあるWebページをスクレイピングして、ナレッジに登録してみます。

ワークフローは次の手順で登録されるようにします。

  • Web Scraperで記事を取得
  • 取得した記事(テキスト)をナレッジに登録しやすい形に変換
  • APIでナレッジに登録

ワークフローにブロックを設置

以下のように開始、Web Scraper、コード、HTTPリクエスト、終了の順にブロックを並べます。

スクリーンショット 2024-07-08 23.25.58.png

Web Scraperで記事を取得

Web Scraperブロック一つにつき、1ページ分の記事しか取得することはできないようです。
特定のURLを載せてしまうと、そのサイトに迷惑をかけてしまう可能性があるので、スクリーンショットでは黒塗りにしてありますが、URLを入力してください。

「WHETHER TO GENERATE SUMMARY」は、スクレイピングしたWebページの内容を要約するかどうかを決定するための機能です。この機能を有効にすると、Difyは現在のワークスペースのデフォルトモデルを使用して、長いテキストを要約してくれます。

スクリーンショット 2024-07-08 23.28.21.png

取得した記事(テキスト)をナレッジに登録しやすい形に変換

本記事ではJavaScriptで変換処理を実装します。デフォルトではPythonとなっていると思うので、JavaScriptに変更しましょう。もちろんPythonで同様な処理を書くこともできます。

第一引数にWeb Scraperで取得した記事がセットされるようにします。

function main({arg1}) {
    return {
        "result": arg1.split("\n").join()
    }
}

出力変数はデフォルトのまま、resultのみ指定します。

スクリーンショット 2024-07-08 23.38.54.png

APIでナレッジに登録

ナレッジの格納先を先に作っておきます。

空のナレッジを作成する

ナレッジの画面で、空のナレッジを作成します。

スクリーンショット 2024-07-08 23.56.07.png

dataset_idを取得

空のナレッジを開き、URLに含まれるdataset_idをコピーしておきます。スクリーンショットの「f59a1〜」となっている部分がdataset_idです。

スクリーンショット 2024-07-08 23.57.49.png

APIキーを発行

Difyのワークフローの左側メニューからAPIアクセスを選択します。

スクリーンショット 2024-07-08 23.45.58.png

右上のAPIキーボタンからAPIを発行します。

スクリーンショット 2024-07-08 23.47.25.png

「APIシークレットキー」という名称でAPIキーのモーダルが表示されるので、「新しいシークレットキーを作成」ボタンを押してAPIキーを作成してください。

スクリーンショット 2024-07-08 23.48.23.png

ワークフローの画面に戻り、HTTPリクエストにて、「認証なし」と書いてあるボタンを押します。

スクリーンショット 2024-07-08 23.53.24.png

認証タイプをAPIキー、Bearerにして、先に作成したAPIキーをペーストし、保存します。

スクリーンショット 2024-07-08 23.52.20.png

APIでナレッジを登録するAPIは、datasets/{dataset_id}/document/create_by_textなので、スクショのようにAPIを記入します。
この後実行しますが、実行時にホスト名がlocalhost127.0.0.1ではリクエストに失敗することがあります。その場合はPCのIPアドレスに変更してみてください。

ヘッダーはContent-Type: application/jsonにします。
ボディはraw textを選択し、{"name": "text","text": "</>コード/{x}result","indexing_technique": "high_quality","process_rule": {"mode": "automatic"}}としましょう。

スクリーンショット 2024-07-08 23.44.04.png

実行

公開ボタンから公開し、開始のブロックを選択して、実行ボタンを押して実行してみましょう。

スクリーンショット 2024-07-09 0.08.32.png

空のナレッジにtext.txtというファイルができていれば成功です。

スクリーンショット 2024-07-09 0.11.43.png

もし、ファイルができていなかった場合は、実行結果のトレース等を開くなどして、どこに問題があるのか調べてみましょう。

スクリーンショット 2024-07-09 0.13.24.png

終わりに

とても簡単にワークフローでWebページをスクレイピングする実装ができました。Webのスクレイピング以外にも多くの機能を提供してくれているので、是非いろんな機能を試してください。

10
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?