Skip to main content

A package for scraping websites and converting them to Markdown

Project description


P.E.G.A.S.U.S

~ Parsing Extracting Generating Automated Scraping Utility System ~
PyPI - Version PyPI - Format PyPI - Implementation PyPI - Status PyPI - Downloads PyPI - Downloads GitHub Repo stars forks - Sunwood-ai-labs GitHub Last Commit GitHub Top Language GitHub Release GitHub Tag GitHub Actions Workflow Status

[🌐 Website][🐱 GitHub] [🐦 Twitter][🍀 Official Blog]

[!IMPORTANT] このリポジトリのリリースノートやREADME、コミットメッセージの9割近くはclaude.aiChatGPT4を活用したAIRA, SourceSage, Gaiah, HarmonAI_IIで生成しています。

pegasus は、ウェブサイトを再帰的にクロールし、そのコンテンツを Markdown 形式に変換するパワフルで柔軟な Python パッケージです。指定した URL から始まり、リンクをたどって関連するページを探索し、HTML コンテンツを美しい Markdown ドキュメントに変換します。コマンドラインインターフェイス (CLI) から実行することも、Python スクリプトから直接使用することもできます。

インストール

pip を使用して pegasus をインストールします。

pip install pegasus-surf 

使い方

コマンドラインから

pegasus をコマンドラインから使用するには、以下のようなコマンドを実行します。

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

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

# 深度を指定して実行
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

# 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

# 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」と回答してください。"  
  • https://example.com/start-page: クロールを開始するベース URL を指定します。
  • output_directory: Markdown ファイルを保存するディレクトリを指定します。
  • --exclude-selectors: 除外する CSS セレクターをスペース区切りで指定します(オプション)。
  • --include-domain: クロールを特定のドメインに限定します(オプション)。
  • --exclude-keywords: URL に含まれる場合にページを除外するキーワードをスペース区切りで指定します(オプション)。
  • --output-extension: 出力ファイルの拡張子を指定します(デフォルト: .md)。
  • --dust-size: ダストフォルダに移動するファイルサイズのしきい値をバイト単位で指定します(デフォルト: 1000)。
  • --max-depth: 再帰処理の最大深度を指定します(デフォルト: 制限なし)。
  • --url-file: スクレイピングするURLが記載されたテキストファイルを指定します。
  • --system-message: LLMのシステムメッセージを指定します(サイトの分類に使用)。
  • --classification-prompt: LLMのサイト分類プロンプトを指定します。TrueまたはFalseを返すようにしてください。

Python スクリプトから

pegasus を Python スクリプトから使用するには、以下のようなコードを書きます。

from pegasus import Pegasus

pegasus = Pegasus(
    base_url="https://example.com/start-page",
    output_dir="output_directory", 
    exclude_selectors=['header', 'footer', 'nav'],
    include_domain="example.com",
    exclude_keywords=["login"]
)
pegasus.run()
  • base_url: クロールを開始するベース URL を指定します。
  • output_dir: Markdown ファイルを保存するディレクトリを指定します。
  • exclude_selectors: 除外する CSS セレクターのリストを指定します(オプション)。
  • include_domain: クロールを特定のドメインに限定します(オプション)。
  • exclude_keywords: URL に含まれる場合にページを除外するキーワードのリストを指定します(オプション)。
  • output_extension: 出力ファイルの拡張子を指定します(デフォルト: .md)。
  • dust_size: ダストフォルダに移動するファイルサイズのしきい値をバイト単位で指定します(デフォルト: 1000)。
  • max_depth: 再帰処理の最大深度を指定します(デフォルト: 制限なし)。
  • system_message: LLMのシステムメッセージを指定します(サイトの分類に使用)。
  • classification_prompt: LLMのサイト分類プロンプトを指定します。TrueまたはFalseを返すようにしてください。

特長

  • 指定した URL から始まり、リンクを再帰的にたどってウェブサイトを探索します。
  • HTML コンテンツを美しくフォーマットされた Markdown に変換します。
  • 柔軟な設定オプションにより、クロールと変換のプロセスをカスタマイズできます。
  • ヘッダー、フッター、ナビゲーションなどの不要な要素を除外できます。
  • 特定のドメインのみをクロールするように制限できます。
  • 特定のキーワードを含む URL を除外できます。
  • URLリストを記載したテキストファイルを指定してスクレイピングできます。
  • LLMを使ってスクレイピングしたサイトを分類できます。

注意事項

  • pegasus は、適切な使用方法とウェブサイトの利用規約に従ってご利用ください。
  • 過度なリクエストを送信しないよう、適切な遅延を設けてください。

ライセンス

このプロジェクトは MIT ライセンスの下で公開されています。詳細については、LICENSE ファイルを参照してください。

貢献

プルリクエストや改善案は大歓迎です。バグ報告や機能リクエストがある場合は、issue を作成してください。


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


以上がREADMEの修正案です。リポジトリの更新内容を反映し、LLMを使ったサイト分類機能や新しいオプションについて説明を追加しました。使用例も拡充して、ツールの活用方法がより明確になるようにしています。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pegasus_surf-0.2.0.tar.gz (8.2 kB view details)

Uploaded Source

Built Distribution

pegasus_surf-0.2.0-py3-none-any.whl (8.7 kB view details)

Uploaded Python 3

File details

Details for the file pegasus_surf-0.2.0.tar.gz.

File metadata

  • Download URL: pegasus_surf-0.2.0.tar.gz
  • Upload date:
  • Size: 8.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/5.0.0 CPython/3.12.4

File hashes

Hashes for pegasus_surf-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4906f4b8ab50a25e7d48f3315f86fdf196985d4a9cc3249ac3477764dc8830e0
MD5 e49b13fdb44847bc7e8e15c3e9e22e44
BLAKE2b-256 813f9cf3f4c3974c15e0297d99175a265f2f423be378526aace7cc5cf90878ff

See more details on using hashes here.

File details

Details for the file pegasus_surf-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for pegasus_surf-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 747e97c2112f47fb7bc6930d340580755f4e101eee818c4e4235ef81c13c4947
MD5 84a24018c351a72dc9286df14458bd99
BLAKE2b-256 5cd70e4ced78e0409acb4257bee997767e37fc6af7e332703db77695c1e81e40

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page