Bingのチャット情報がスクレイピングできないんですけど
今回はBingチャットのスクレイピングが困難な理由について説明します。
✓この記事の内容
- BingのAIチャットについて
- 要素取得が難しい理由その1
- 要素取得が難しい理由その2
なお筆者は実際には目的の情報を取得しています。
ただスクレイピングに関しては自己責任となるので今回詳細なコードは公開せず、解決方法のみを有料記事で配信することとします。
私はVBAを使ったスクレイピングを数多く行っており、記事も50記事以上書いています。
今回のサイトについても解決できましたので参考にしていただければ幸いです。
VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。ブラウザやキー操作の基本的なコマンドは共通していますのでコードを書く際の参考になります。
VBAの書籍の中でSeleniumBasicを取り上げている数少ない書籍です。ページ数としては20ページほどですがとてもわかりやすく書かれています。またVBA全般を網羅した内容が書かれており、長く使用することができます。
BingのAIチャットについて
Microsoftは2023年2月7日(米国時間)にBingにAIチャット機能を新たに搭載しました。
これには出資先の OpenAI が開発した技術(チャットによれば GPT-4 Prometheus)が使用されています。
OpenAI といえば、ChatGPT が有名ですが、Bing チャットは ChatGPT とは別ものです。
今回はこのAIチャットにおける要素取得の難しさについて説明します。
要素取得が難しい理由その1
理由の1つ目は「FindElementメソッドでは取得できない」ということです。
実際にSeleniumのFindElementメソッドを使って以下の要素を選択してみます。
しかし、以下のエラーが出てしまいます。
これは要素が存在しないという意味ですが。この画面から取得ができないようになっています。
この要素を取得するにはDriver.ExecuteScriptメソッドを使ってJavaScirptを記載する必要があります。
JavaScriptについては以下の記事で説明していますがこの方法だけでは取得できないのでご注意ください。
要素取得が難しい理由その2
理由の2つ目は「Cssセレクターでは取得できない」ということです。
以下は「2月20日に北海道である家族向けのイベントを3つ教えて」と質問した内容です
質問するとチェックマークが現れて回答を生成してくれます。ただこのチェックの数が質問により異なっています(上は3つですが4つや5つの場合もある)。その為回答文のみを取得するのは困難です
チェックマークを含めたすべてのテキストを取得する方法もありますが、見た目もよくないのでHTML構造を把握して書く必要があります。
解決方法
以下の有料記事では上記の2つの問題を解決する方法について説明しています。
- JavaScriptを使った要素の取得方法
- 複数ある要素のうち目的の要素を取得する方法
内容は難しそうに感じますが、JavaScriptに関する知識はほとんど必要なく使用することができます。
手法についても記事の中で詳しく説明していますので参考にしていただければ幸いです。
【SeleniumBasic】JavaScriptを使ったスクレイピング手法と複数要素の取得方法について説明します
今回のまとめ
今回はBingのAIチャットについて、要素取得の難しさについて説明しました。
AIチャットは現時点で最も有用な機能となっています。プログラミングを活用して利用できる立場になっていきましょう。
APIを使ってChatGPTを使用した記事はこちら
SeleniumBasicについて勉強したい方はこちら
コメント