ChatGPT Code interpreterを使って直接スクレイピングはできないけど、スクレイピングするpythonは作成できる

ChatGPT Code interpreterはインターネットに繋がっていないので直接 Webサイトのスクレイピングコードを作成することはできないと言われています。

ただし、以下のような質問と、WebサイトからダウンロードしたHTMLを添付してあげることにより、<ほぼ>そのまま動作するpythonコードを作成してもらうことが可能です。

添付ファイルのWebサイトにアクセスし、トップページから特定の日付の記事のタイトルとリンクをデータを抜き出すpythonコードを作成してください。
なお、日付は自動的に昨日の日付を設定し、添付のファイルは以下のURLにあるものとしてください。https://www.xxxx.com/news/

以下、Code interpreterにて作成してもらった pythonプログラムです。

後半は手直しが必要な状態ですが、もう少しきちんと指示をしてあげればそのまま動作するpythonを作ってくれるのではなかと思います。

from datetime import datetime, timedelta
import requests
from bs4 import BeautifulSoup

# Set yesterday's date
yesterday = datetime.now() - timedelta(days=1)

# Initialize an empty list to store the articles
articles_yesterday = []

# URL of the top page
url = "https://www.xxxx.jp/news/"

# Get the HTML content of the top page
response = requests.get(url)
html = response.text

# Use BeautifulSoup to parse the HTML content
soup = BeautifulSoup(html, "html.parser")

# Find all <li> elements in the HTML
for li in soup.find_all("li"):
    # Find the <time> element in the <li> element
    time_element = li.find("time")
    if time_element:
        # Extract the date from the "datetime" attribute of the <time> element
        date_str = time_element["datetime"].split("T")[0]
        date = datetime.strptime(date_str, "%Y-%m-%d")

        # Check if the date of the article is yesterday
        if date == yesterday:
            # Find the <a> element in the <li> element
            a_element = li.find("a")
            if a_element:
                # Extract the title and the link of the article
                title = a_element.text
                link = a_element["href"]
                articles_yesterday.append((title, link))

# Print the articles of yesterday
for title, link in articles_yesterday:
    print(f"Title: {title}")
    print(f"Link: {link}\n")

SOARからChatGPTにアクセスするインテグレーションをYoutubeを見ながら作成してみた

すでに XSOAR には ChatGPT にアクセスする為のインテグレーションがありますが、Youtube をみるとそれを自作する動画があったので、勉強の為、真似して作成してみました。

ただし、Youtube の動画のPythonをそのまま利用してもエラーがでてしまったので、ChatGPT と相談しながら修正しました。

それ以外の詳しい手順は以下のYoutubeをご覧ください。

XSOAR Integration Creation for CHATGPT to Answer Questions – PurpleXsec

1.BYOIボタンを押す

まず、XSOAR にログインし、左下の settingsメニューから Integrations – instances に進みます。

すると右上に「+BYOI」ボタンが表示されるので、それを押します。

2.Integration Settingsを設定する

「+BYOI」ボタンを押すと、右側に Integration Settings が表示されるので、その中の、

・BASIC
・Parameters
・Commands

などの設定を Youtubeを見ながら実施していきます。

3.Pythonコードをサイトからコピペする

Youtube の中に出てくるPythonコードは以下のGitHubで公開されていますので、これをコピーし、左側にデフォルトで提供されるPythonコードと置き換えます。

https://github.com/vidura-supun/XSOAR-CHATGPT-Integration/blob/main/ChatGPT.py

4.Pythonコードを少し修正する

GitHubからコピーしてきたPythonコードをそのまま利用すると後述の Integrationの接続テストの際に、以下のエラーが発生してしまいます。

Authorization Error: make sure API Key is correctly set (85)

どうやら ChatGPT APIにアクセスするための認証ヘッダーの定義が Youtube 公開当時から変わった?ようなので、22行目を以下の通り書き換えます。

変更前
self._headers = {'Authorization': self.api_key, 'Content-Type': 'application/json'}
変更後
self._headers = {'Authorization': f'Bearer {self.api_key}' , 'Content-Type': 'application/json'}

あとで調べたのですが、ChatGPT ではAuthorizationヘッダを用いた Bearer認証というものを利用しているみたいですね。(BASIC認証の親戚みたいな感じですね。)

5.テスト接続する

4.の修正後、Integration設定画面から「Test」ボタンを押すと、以下のとおり正常に接続することができました。

XSOAR – Integration設定画面

この後問題なく「user_question」コマンドを実行することもできました。

Power AutomateからChatGPTが生成したpythonを実行させる

ChatGPT でpythonを自動生成してくれるので、それをPower Automateで自動的に動かせないかと思い、試してみました。

もしかしたらこれを一歩進めて、Power Automateから ChatGPT を呼び出してpython を自動生成させ、それをさらにPower Automateから自動実行させるみたいなことができるかもしれませんねー。

1.Power Automate Desktop(PAD)を起動

Windows 10 にインストールしたPower Automate Desktopを起動します。

Power Automate Desktop画面

2.PADでフローの作成開始

「+新しいフロー」を選択し、フロー名を設定後、「作成」を選択します。

Power Automate Desktop画面

3.ChatGPT で生成したPythonをファイルに保存

ChatGPT で生成したPythonをコピペしてファイルに保存しておきます。

保存したPythonプログラムを実行させるには、Windows 10に Pythonの実行環境とPythonプログラムの中で利用しているライブラリがインストールされている必要があります。

4.アプリケーションの実行を選択

ファイルに保存されているPythonプログラム(*.py)を実行する為、
左ペインの「アクション」から「システム」-「アプリケーションの実行」
を選択します。

Power Automate Desktop画面

5.アプリケーションとしてpythonを指定

「アプリケーションの実行」設定画面にて以下の通り設定します。

アプリケーションパス:python
コマンドライン引数:pythonプログラム名
作業フォルダー:pythonプログラム名を置いているディレクトリ

Power Automate Desktop画面

設定後、「保存」ボタンを押すと以下の画面となります。

Power Automate Desktop画面

6.Pythonの実行結果をメモ帳で表示

pythonの実行結果は作業フォルダーにファイルとして保存されるようになっている為、それをメモ帳で表示する処理を以下のとおり追加してみました。

Power Automate Desktop画面

ChatGPTのプラグイン WebPilotで指定したWebページのデータを抜き出してもらった

本日、ChatGPT plus のサブスクリプション契約を行い、Pluginが利用できるようになったので、さっそく WebPilotを使ってみました。

ちなみにChatGPT plusのサブスクリプションを契約したら、必要なPluginを個々にインストールする必要があります。

ChatGPT Plugin Store

なお、以前はPluginの利用は順番待ちだったようですが、現時点では、plus契約と同時に使えるようになっているみたいです。

さっそくWebPilotを試してみる

以下、情報を取得するURLを指定して https で始まる行を全て取得してもらった結果です。

ChatGPT

きれいに依頼したとおりの情報をとってくれました。

うまく依頼すれば、いろいろなサイトからセキュリティのIoC情報を拾ってきてくれそうですが、この場合も結局はスクレイピングしていることになるんでしょうね。

OpenAIのサイトからChatGPTのAPIキーを取得し、18ドル分の無償枠内で利用してみた。

SOARから ChatGPTにアクセスする為に、ChatGPTのAPIキーを取得してみましたので、その手順を記録しておきます。

なおAPIキーの取得に際しては、OpenAIのアカウントを事前に作成しておく必要があります。

また一見、 APIキーの利用は無償に見えますが、18ドル分の無償枠があるだけで、それを超えて利用しようとすると有償になるようですので注意が必要です。

1.OpenAIのサイトにアクセス

以下のURLからOpenAIのサイトにアクセスし、ブラウザの真ん中あたりに現れる「Get Started」のリンクをクリックします。

https://openai.com/product

するとログイン画面が現れるのでログインすると、以下のようなOpenAI のトップページが表示されます。

OpenAIトップページ

2.View API keysかAPIキーを作成

上の画面の右上にある「Personal」という部分をマウスでクリックすると「View API Keys」というリンクが出てくるのでそれを選択します。

すると、以下のAPI Keys の画面が表示されますので、ページの真ん中あたりにある「Create new secret key」をクリックします。

OpenAI – API Keys

その後、以下のポップアップが表示されるので、API keyに名前を付けます。

OpenAI – Ceate API Key

そして「Create secret key」のボタンを押せば、API Keyが生成され、同ポップアップ上に表示されます。(右に表示されるコピーボタンを押せば、コピーできます。)

OpenAI – Ceate API Key

なお生成されたAPI Keyは、先ほどのAPI Key ページに蓄積して表示されていくようです。

OpenAI – API Key

3.API Keyの利用には無償枠あり

上記の通り作成したAPI Keyを早速 SOAR で利用したところ問題なく利用できた為よろこんでいたのですが、実は API key の利用には18ドルの無償枠があるだけで、使い続けていると有償になるようです。

今どれくらい無償枠を利用したかについては、先ほどのページの左ペインのメニューの中から「Usege」を選択すると確認できます。

OpenAI – Usage

上の画像はSOARにて”Emotetってなんですか?”と質問し、ChatGPTから回答をもらった直後の状態ですが、0.0005ドルの無償枠を消費したようです。