PEGASUS v0.2.0 リリース解説 – より強力で柔軟なウェブスクレイピングを実現!

ウェブ開発

はじめに

PEGASUSは、ウェブサイトを再帰的にクロールしてそのコンテンツをMarkdown形式に変換する、パワフルで柔軟なPythonパッケージです。このたび、PEGASUSのバージョンが0.2.0にアップグレードされ、新機能の追加や改善が行われました。

Release 🐎PEGASUS v0.2.0 リリースノート · Sunwood-ai-labs/PEGASUS
新機能URLリストを記載したテキストファイルを指定してスクレイピングできるようになりました。--url-file オプションを使用して、スクレイピングするURLが記載されたテキストファイルを指定できます。LLMを使ってスクレイピングしたサイトを分類できるようになりました。--system-message オプションと ...

新機能

URLリストからのスクレイピング

PEGASUSは、これまで単一のURLからスクレイピングを開始していましたが、v0.2.0からはURLリストが記載されたテキストファイルを指定してスクレイピングできるようになりました。--url-fileオプションを使用することで、複数のURLを一度にスクレイピングすることが可能です。

pegasus --url-file urls.txt output/roomba --exclude-selectors header footer nav aside .sidebar .header .footer .navigation .breadcrumbs --exclude-keywords login --output-extension .txt --max-depth 1

上記のコマンドでは、urls.txtというファイルに記載されたURLリストからスクレイピングを開始します。--url-fileオプションでURLリストファイルを指定し、他のオプションを組み合わせることで、効率的なスクレイピングが行えます。

LLMを使用したサイトの分類

PEGASUSでは、Large Language Model (LLM) を使用してスクレイピングしたサイトを分類できるようになりました。--system-messageオプションと--classification-promptオプションを使用して、LLMのシステムメッセージとサイト分類プロンプトを指定します。

pegasus --url-file urls.txt output/roomba2 --exclude-selectors header footer nav aside .sidebar .header .footer .navigation .breadcrumbs --exclude-keywords login --output-extension .txt --max-depth 1 --system-message "あなたは、与えられたウェブサイトのコンテンツが特定のトピックに関連する有用な情報を含んでいるかどうかを判断するアシスタントです。トピックに関連する有益な情報が含まれている場合は「True」、そうでない場合は「False」と回答してください。" --classification-prompt "次のウェブサイトのコンテンツは、Roomba APIやiRobotに関する有益な情報を提供していますか? 提供している場合は「True」、そうでない場合は「False」と回答してください。"

上記のコマンドでは、LLMを使用してスクレイピングしたサイトを分類しながらスクレイピングを行います。--system-messageオプションでLLMのシステムメッセージを指定し、--classification-promptオプションでサイト分類プロンプトを指定します。これにより、特定のトピックに関連する有益な情報を含むサイトを抽出することができます。

また、PEGASUSではGeminiの無料APIに柔軟に対応するために、レートリミットが発生した場合にスリープする機能を追加しました。--rate-limit-sleepオプションを使用して、レート制限エラーが発生した際のスリープ時間を秒単位で指定できます。これにより、APIの利用制限に適切に対処し、スクレイピングを継続することができます。

pegasus --url-file urls.txt output/roomba2 --exclude-selectors header footer nav aside .sidebar .header .footer .navigation .breadcrumbs --exclude-keywords login --output-extension .txt --max-depth 1 --system-message "あなたは、与えられたウェブサイトのコンテンツが特定のトピックに関連する有用な情報を含んでいるかどうかを判断するアシスタントです。トピックに関連する有益な情報が含まれている場合は「True」、そうでない場合は「False」と回答してください。" --classification-prompt "次のウェブサイトのコンテンツは、Roomba APIやiRobotに関する有益な情報を提供していますか? 提供している場合は「True」、そうでない場合は「False」と回答してください。" --rate-limit-sleep 30

上記のコマンドでは、--rate-limit-sleepオプションを使用してレート制限エラー時のスリープ時間を30秒に設定しています。

さらに、PEGASUSではLitellmの構成を活用することで、BedrockやOpenAIなど複数のプロバイダにも柔軟に対応できるようになりました。--modelオプションを使用して、使用するLLMのモデル名を指定することができます。これにより、異なるプロバイダのLLMを seamlessly に切り替えながら、サイトの分類を行うことができます。

pegasus = Pegasus(
    output_dir="output_directory", 
    exclude_selectors=['header', 'footer', 'nav'],
    include_domain="example.com",
    exclude_keywords=["login"],
    output_extension=".txt",
    dust_size=500,
    max_depth=2,
    system_message="You are an assistant to determine if the content of a given website contains useful information related to a specific topic. If it contains relevant and beneficial information about the topic, answer 'True', otherwise answer 'False'.",
    classification_prompt="Does the content of the following website provide beneficial information about the Roomba API or iRobot? If so, answer 'True', if not, answer 'False'.",
    max_retries=5,
    model="bedrock/bedrock-4",
    rate_limit_sleep=30,
    other_error_sleep=5
)

上記のコードでは、modelパラメータを使用してBedrockのモデルbedrock/bedrock-4を指定しています。これにより、Bedrockプロバイダを使用してサイトの分類が行われます。

PEGASUSのLLMを使用したサイトの分類機能は、柔軟なオプション設定と複数プロバイダへの対応により、より強力で汎用性の高いものになりました。レートリミットへの対処やプロバイダの切り替えを適切に行うことで、安定したスクレイピングとサイトの分類が可能です。

改善点

探索深度の指定

PEGASUSでは、--max-depthオプションを使用して、再帰処理の最大深度を指定できるようになりました。これにより、無限ループを防ぎ、必要な深度までリンクを辿ることができます。

pegasus --base-url https://docs.eraser.io/docs/what-is-eraser output/eraser_docs2 --exclude-selectors header footer nav aside .sidebar .header .footer .navigation .breadcrumbs --include-domain docs.eraser.io --exclude-keywords login --output-extension .txt --max-depth 2

上記のコマンドでは、--max-depthオプションを使用して探索深度を2に指定しています。これにより、ベースURLから2階層までのリンクをたどってスクレイピングを行います。

出力ファイルの拡張子指定

PEGASUSでは、--output-extensionオプションを使用して、出力ファイルの拡張子を指定できるようになりました。デフォルトでは.mdが使用されますが、必要に応じて他の拡張子を指定することができます。

pegasus --base-url https://example.com/start-page output_directory --exclude-selectors header footer nav --include-domain example.com --exclude-keywords login --output-extension txt

上記のコマンドでは、--output-extensionオプションを使用して出力ファイルの拡張子を.txtに指定しています。

ダストフォルダへの移動サイズのしきい値指定

PEGASUSでは、--dust-sizeオプションを使用して、ダストフォルダに移動するファイルサイズのしきい値をバイト単位で指定できるようになりました。デフォルトでは1000バイトが使用されますが、必要に応じて変更することができます。

pegasus = Pegasus(
    output_dir="output_directory", 
    exclude_selectors=['header', 'footer', 'nav'],
    include_domain="example.com",
    exclude_keywords=["login"],
    output_extension=".txt",
    dust_size=500,
    max_depth=2,
    system_message="You are an assistant to determine if the content of a given website contains useful information related to a specific topic. If it contains relevant and beneficial information about the topic, answer 'True', otherwise answer 'False'.",
    classification_prompt="Does the content of the following website provide beneficial information about the Roomba API or iRobot? If so, answer 'True', if not, answer 'False'.",
    max_retries=5,
    model="gemini/gemini-1.5-pro-latest",
    rate_limit_sleep=30,
    other_error_sleep=5
)

上記のコードでは、dust_sizeパラメータを使用してダストフォルダへの移動サイズのしきい値を500バイトに指定しています。

引数一覧

PEGASUSの主な引数とその説明を以下の表にまとめました。

引数 説明 デフォルト値
--base-url スクレイピングを開始するベースURL -
--url-file スクレイピングするURLが記載されたテキストファイル -
--output-extension 出力ファイルの拡張子 .md
--dust-size ダストフォルダに移動するファイルサイズのしきい値(バイト) 1000
--max-depth 再帰処理の最大深度 制限なし
--system-message LLMのシステムメッセージ(サイトの分類に使用) -
--classification-prompt LLMのサイト分類プロンプト(TrueまたはFalseを返す) -
--max-retries フィルタリングのリトライ回数の上限 3
--model LLMのモデル名 gemini/gemini-1.5-pro-latest
--rate-limit-sleep レート制限エラー時のスリープ時間(秒) 60
--other-error-sleep その他のエラー時のスリープ時間(秒) 10

これらの引数を適切に組み合わせることで、PEGASUSのスクレイピング動作をカスタマイズすることができます。必要に応じて引数を指定し、効率的かつ柔軟なウェブスクレイピングを実現しましょう。

おわりに

以上、PEGASUS v0.2.0のリリースに伴う新機能と改善点について解説しました。URLリストからのスクレイピングやLLMを使用したサイトの分類など、より強力で柔軟なウェブスクレイピングが可能になりました。

PEGASUSを使用すれば、ウェブサイトを再帰的に探索し、コンテンツを美しいMarkdownドキュメントに変換できます。ドキュメンテーションの自動化、コンテンツの管理、データ分析などにぜひお役立てください。

初心者の方も、この記事を参考にPEGASUSを使ってみてください。コマンドラインやPythonスクリプトから簡単に使用できます。ウェブスクレイピングの可能性を広げるPEGASUSで、新しいプロジェクトにチャレンジしてみましょう!

リポジトリ

GitHub - Sunwood-ai-labs/PEGASUS: Evolutionary Merge Experiment
Evolutionary Merge Experiment. Contribute to Sunwood-ai-labs/PEGASUS development by creating an account on GitHub.

コメント

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