21 ポイント 投稿者 GN⁺ 2024-07-11 | 2件のコメント | WhatsAppで共有
  • CrawleeはWebスクレイピングとブラウザ自動化のためのPythonライブラリ
  • 信頼できるクローラーを素早く構築するのに役立つ
  • AI、LLM、RAG、GPT向けのデータ抽出に利用可能
  • WebサイトからHTML、PDF、JPG、PNGなどのファイルをダウンロードできる
  • BeautifulSoup、Playwright、純粋なHTTPと連携
  • HeadfulモードとHeadlessモードの両方をサポート
  • プロキシローテーション機能を提供

特徴

  • HTTPおよびHeadlessブラウザクローリング向けの統合インターフェースを提供
  • 利用可能なシステムリソースに基づいて自動並列クローリングを実行
  • 型ヒントを使用するPythonで書かれており、IDEの自動補完機能を向上させ、バグを減らす
  • エラー発生時またはブロックされた際の自動リトライ機能
  • 統合されたプロキシローテーションおよびセッション管理機能
  • 設定可能なリクエストルーティング - URLを適切なハンドラーへ直接渡す
  • クロール対象URLの永続キュー
  • 表形式データとファイルの両方に対応するプラグイン式ストレージ
  • 強力なエラー処理機能

Scrapyとの違い

  • Crawleeは標準でHeadlessブラウザクローリング(Playwright)をサポート
  • シンプルで洗練されたインターフェース - 10行未満のコードでスクレイパーを設定可能
  • 完全な型ヒント対応
  • 標準のAsyncioをベースにしている

GN⁺の見解

  • CrawleeはWebスクレイピングとクローリングのための強力なツールに見える。特にHeadlessブラウザベースのクローリングを標準でサポートしている点は大きな利点だと考えられる。
  • シンプルなインターフェースと少ないコード量でクローラーを作成できるため、生産性が高そうだ。また、型ヒントを積極的に活用することで開発体験が向上し、エラー発生の可能性が低くなる。
  • データ抽出のためにクローリングが必要なプロジェクトであれば、Crawleeは積極的に検討する価値がある。特にJavaScriptレンダリングが必要なWebページをクロールしなければならない場合、PlaywrightCrawlerが有用だと思われる。
  • ただし、非常に大規模なクローリングが必要な場合やリアルタイム性が重要な場合には、分散クローリングをサポートするScrapyや他のツールを使う方が適している可能性がある。
  • なお、クローリングポリシーや法的な問題についても十分に検討したうえで利用するのが望ましい。

2件のコメント

 
yangeok 2024-07-15

Node に対応しているのは知っていましたが、Python にも対応しているようですね。メンテナンスが必要なスクレイパーなら、フレームワークを真剣に検討してみるべきかもしれません(笑)

 
GN⁺ 2024-07-11
Hacker Newsのコメント
  • 既存の機能を文書化することが重要だ。どれほど優れたWebスクレイピングプラットフォームでも、使い方をユーザーしか理解できないのでは意味がない

    • たとえば、tiered_proxy_urls: list[list[str]] | None = None の意味は理解しづらい
    • 例では、.csv や .xlsx のテーブルなど、あらゆるデータを見つけてダウンロードする方法を示すべきだ
    • 単にテキストを取得してURLを検索するだけなら誰にでもできる
    • 1000種類の異なる項目をパースし、別のエンドポイント経由で3〜5個の項目を取得するような例が必要だ
    • このツールがフレームワークなのか自動化ツールなのか明確ではない
    • Webスクレイピングのオプトアウトプロトコル(例: Robots.txt、HTTPおよびコンテンツタグ)をサポートしているのか気になる。特にEUのDSM指令以降は重要になっている
  • Apify/Crawlee に感謝している。長年のNode.jsユーザーとして、このライブラリが最もうまく動作した

  • プロジェクト向けのスタックを探していて Crawlee を見つけた。Pythonライブラリが欲しかったが、Typescript で Crawlee を使って1週間でプロジェクトを完了した

    • APIは、これまで使ったどのPythonスクレイピングAPIよりもはるかに優れている
    • Playwright との統合により、プログラミング体験が非常に快適になっている
    • フロントエンドでレンダリングされるWebサイトや、変更されたXHRレスポンスをキャプチャする作業がうまく機能する
    • Apify プラットフォームを使って拡張する予定だ
  • Scrapy とどう違うのか気になる

  • 他のライブラリから移行する理由は何なのか気になる。自前のクローラーを構築したが、特にユニークな点は見つからなかった

  • モダンなPythonコードは見栄えがいい

    • サンプルコードの const data = await crawler.get_data() はJavascriptのように見える。アンダースコアが抜けているようだ
  • テストケースから、より多くのコードスニペットを文書の例として取り込むことを提案する。良い仕事だ

  • スクレイピングツールはいつでも歓迎だ。個人プロジェクトで使ってみるつもりだ。AIのおかげで、今のスクレイピングはゴールドラッシュ時代にシャベルを売るようなものだ