仕事の効率UP!AIと始めるWeb情報自動収集「スクレイピング」入門【後編】

AI

前回の記事「仕事の効率UP!AIと始めるWeb情報自動収集「スクレイピング」入門【前編】」では、Web上の情報収集を自動化する「スクレイピング」の基本的な概念や、PythonのRequestsとBeautiful Soupといった主要なライブラリ、そしてスクレイピングを行う上での重要な注意点やマナーについて学びました。

また、プログラミング初心者にとってハードルとなりがちな「セレクタ特定」などの作業において、AIが強力なサポートとなりうる可能性についても触れ、AIにコードの「ひな形」を作ってもらい、自分でセレクタを設定してコードを完成させる、という方法も有効であることをご紹介しました。

今回は、さらに一歩進んで、自分でコードを一行も書かずに、動くスクレイピングコードをAIにすべて生成してもらうことを目標に挑戦した結果をご紹介します。

これは、プログラミング経験がほとんどない方にとって、最も理想的なAI活用方法の一つと言えるでしょう。

今回はChatGPTGoogle Geminiを使って検証していきます。

AIに「丸投げ」して、必要な情報収集を自動化できるのか? その可能性を探ります。

AIによるスクレイピングコード生成検証

この記事では、Webサイトから特定の情報を取得するためのスクレイピングコードを、AIにどこまで「全部」生成してもらえるか、実際に試した検証結果を報告します。

プログラミングの知識がほとんどない状態から、AIにコード生成を任せられるかどうかが、今回の最大の焦点です。

検証では、前編同様に以下の練習用Webサイトを対象としました。

このサイトは、スクレイピングの練習用にシンプルかつ構造が分かりやすく設計されています。

スクレイピング練習用商品リスト

このページには、いくつかの商品のリストが表示されており、各商品には「商品名」「価格」「詳細ページへのリンク」といった情報が含まれています。

今回の検証では、これらの情報をすべて取得するPythonスクレイピングコード(RequestsとBeautiful Soupを使用)の完全な生成を目指しました。

取得したい情報

  • 商品名
  • 価格
  • 詳細ページのURL

検証1:WebサイトのURLだけを渡した場合

まず、AIにWebサイトのURLだけを提示し、目的の情報を伝えることで、必要なスクレイピングコード一式を完全に生成できるかを試みました。

このアプローチは、ユーザーが最も直感的に試しやすい方法と言えるでしょう。

AIへのプロンプト例

以下のURLのページから、商品名、価格、詳細ページのURLをすべて取得するスクレイピングコードをPythonでRequestsとBeautiful Soupを使って完全に生成してください。

URL: https://sample-d6924.web.app/scraping_practice.html

コードは、必要なライブラリのインポートから情報取得、そして結果の出力まで、すべて含めて完全に記述してください。

ChatGPTでの結果

このプロンプトに対し、ChatGPTはRequestsとBeautiful Soupを使ったPythonコードを生成しました。

コードの基本的な構造(Requestsでページを取得し、Beautiful Soupで解析する部分)は正しく記述されていましたが、問題はコードに含まれるセレクタ(HTML要素を特定するための指定子)でした。

生成されたセレクタは、実際の練習用ページのHTML構造とは異なる、一般的なWebサイトで使われそうなセレクタ(例: .item-title, .price-valueなど)が設定されていました。

そこで、「取得先のページを解析してセレクタを実際のものにしてください」と再度お願いしましたが、何度かやり取りを繰り返しても、ChatGPTは実際のページ構造に合致する正確なセレクタを生成することはできませんでした。

例えば、ページ上の商品名が <h3 class="product-name"> というタグとクラス名でマークアップされているにも関わらず、AIは .item-heading のような存在しないセレクタを提案し続ける、といった状況が見られました。

結果として、生成されたコードは正しく動作しませんでした。

Geminiでの結果

Geminiでも同様のプロンプトを試したところ、RequestsとBeautiful Soupを使ったコードが生成されましたが、こちらもChatGPTと同様にセレクタが正確ではなく、そのままでは動作しませんでした。

例えば、価格情報が <span class="product-price"> にあるにも関わらず、AIは .price span といった曖昧なセレクタを生成することがありました。

何度か修正を試みましたが、URLと簡単な指示だけでは、ページの具体的なHTML構造を正確に把握し、適切なセレクタを特定するには至りませんでした。

検証1のまとめ

WebサイトのURLだけを渡し、AIにページの構造を「解析」させて正確なセレクタを特定し、動作するスクレイピングコードを完全に生成させるのは、今回の検証では困難でした。

AIは一般的なHTML構造に基づいてセレクタを推測しようとしますが、個別のWebサイトのユニークな構造までは正確に把握できませんでした。

また、検証中には、指定されたURLにAIがアクセスできない旨のメッセージが出力され、コード生成自体が行えなかったケースも多く発生しました。 これは、AIモデルの外部Webサイトへのアクセス能力が常に保証されるわけではないという現実を示しています。

検証2:HTMLソースを渡した場合

検証1でURLだけではうまくいかなかったため、次にページのHTMLソースコード全体をAIに提供し、コード生成を依頼してみました。

これは、AIにページの構造情報を直接与えることで、セレクタ特定の問題を解消できるのではないかという仮説に基づいています。

AIへのプロンプト例(URLとHTMLソースを含む)

以下のURLのページから情報を取得するスクレイピングコードをPythonでRequestsとBeautiful Soupを使って完全に生成してください。
URL: https://sample-d6924.web.app/scraping_practice.html
コードは、必要なライブラリのインポートから情報取得、そして結果の出力まで、すべて含めて完全に記述してください。
取得情報は以下です。
・商品名
・価格
・詳細ページのURL
以下はページのソースです。https://sample-d6924.web.app/scraping_practice.html にアクセスするとこれと同じものが取得できます。参考にしてください。
セレクタなどは、以下のページのソースを解析して実際のものを設定してください。

[ここに https://sample-d6924.web.app/scraping_practice.html のHTMLソースコード全体を貼り付け]

ChatGPTでの結果

このプロンプトをChatGPTに与えたところ、提供されたHTMLソースコードを正確に解析し、目的の情報に対応する適切なセレクタを含むRequestsとBeautiful Soupを使ったPythonコードを生成しました。

HTMLソースという具体的な構造情報があったため、AIは迷うことなく正確なセレクタを特定できました。生成されたコードは、必要なライブラリのインポートから情報取得、そして結果の出力まで、すべて含まれており、期待通りに動作しました

Geminiでの結果

Geminiでも同様のプロンプトを試したところ、こちらも提供されたHTMLソースコードを正確に解析し、適切なセレクタを含むRequestsとBeautiful Soupを使ったPythonコードを生成しました。

何度かやり取りが必要な場合もありましたが、最終的には動作するコードを生成することに成功しました。GeminiもHTMLソースを基に、正確な要素特定ロジックをコードに反映させることができました。

検証2のまとめ

WebサイトのURLだけでなく、ページのHTMLソースコード全体をAIに提示し、取得したい情報を明確に伝えることで、AIはHTMLの内容を正確に解析し、動作するスクレイピングコード一式を完全に生成できる可能性が高いことが分かりました。

ただし、今回は構造が非常にシンプルで規則的なサイトでの検証であり、より複雑な構造を持つサイトや、JavaScriptによってコンテンツが動的に生成されるサイトでは、生成されたコードに対して人間が修正を加える必要が出てくる可能性が高いと考えられます。

AIにコード「全部」生成を任せるのは可能か? AIの限界と課題

今回の検証で、URLだけではAIによるコード完全生成は難しいことが分かりました。これは、AIが持つ以下の限界によるものと考えられます。

  • Webサイトへのアクセス能力: AIが直接URLにアクセスできない場合、情報が得られません。これは、AIモデルの機能制限や、Webサイト側のセキュリティ設定などが原因で発生します。
  • ページの構造理解: HTMLだけでは、人間が見るような視覚的・論理的な情報の関連性(例: 「この見出しはこの記事のタイトルだ」といった判断)を正確に把握しにくいです。AIはタグや属性を読み取れますが、その意味合いやレイアウト上の関連性を完全に理解するのは難しいです。
  • 情報の曖昧さ/要素特定: どのHTML要素が目的の情報か、判断が難しい場合があります。特に、クラス名やIDが意味を持たない場合や、同じような構造が繰り返されるページでは、AIが正確な要素を特定するのが困難になります。
  • 動的なコンテンツ対応: JavaScriptで表示される内容はRequests/Beautiful Soupでは取得できない場合が多いです。AIがURLを見ただけで、そのページが動的なのかどうか、そしてSeleniumのようなブラウザ操作ライブラリが必要なのかを自動で判断し、適切なコードを生成するのは難しいです。
  • エラー処理/堅牢性: 実用的なコードには、ネットワークエラー発生時の再試行や、ページの読み込み失敗時の処理など、様々なエラー対応が必要です。AIが生成するコードは、これらの頑健な処理が含まれないことが多いです。
  • 倫理・法的な制約: AIはWebサイトのrobots.txtファイルを読んだり、利用規約を理解したりすることはできません。スクレイピングの可否や適切な頻度といった倫理的・法的な判断は、常に人間が行う必要があります。

これらの限界があるため、AIに期待通りのスクレイピングコード一式を完全に生成してもらうには、人間側からの適切な情報提供が非常に重要になります。

特に、ページのHTMLソースコードを提供することは、AIがページの構造を理解し、正確な要素を特定するための最も効果的な方法の一つです。

AIの技術は日々進化しています

現在のAIが持つこれらの限界も、将来的に克服される可能性があります。

例えば、AIがWebページの視覚的な構造や論理的な関連性をより深く理解できるようになる、

動的に生成されるコンテンツを認識し適切なライブラリを使ったコードを自動的に選択・生成できるようになる、

あるいはより少ないヒントからでも目的の情報を正確に推測できるようになる、といった技術的な進歩が考えられます。

そうなれば、今回検証した「URLだけを渡してコードを全部書いてもらう」というアプローチの精度も、将来的に大きく向上する可能性があります。

AIの進化によって、プログラミングの専門知識がなくても、より手軽にWeb上の情報を収集できるようになる未来は十分に考えられます。

まとめ

この記事では、AIにスクレイピングコードを完全に生成してもらうという目標のもと、WebサイトのURLだけを提示した場合と、URLに加えてHTMLソースコード全体を提示した場合で、AIの応答がどのように変わるかを比較検証した事実を報告しました。

検証の結果、AIにURLだけでなくHTMLソースコード全体を提供することで、AIはページの構造を正確に把握でき、プロンプトで指定された情報に対応する要素を高い精度で特定し、RequestsとBeautiful Soupを使った、動作するスクレイピングコード一式を完全に生成できる可能性が非常に高いことが分かりました。

AIはスクレイピングの強力なアシスタントであり、適切な情報(特にHTMLソースの提供)を与えることで、コードをゼロから生成する出発点として非常に有効です。

また、スクレイピングではないですが、日々のExcelでの作業を自動化して業務効率化を目指す記事を書きましたので、よろしければご覧ください。

コメント

タイトルとURLをコピーしました