Crawlee はクローリングとスクレイピングをエンドツーエンドでカバーし、信頼性の高いスクレーパーの構築を支援します。速い。
Crawlee for Python は早期導入者に公開されています。
クローラーはほとんど人間のように見え、デフォルト設定であっても最新のボット保護のレーダーの下を飛行します。 Crawlee は、技術的な詳細を気にすることなく、Web をクロールしてリンクを探し、データを収集し、機械可読形式で永続的に保存するためのツールを提供します。また、豊富な構成オプションのおかげで、デフォルト設定では不十分な場合でも、プロジェクトのニーズに合わせて Crawlee のほぼすべての側面を調整できます。
Crawlee プロジェクト Web サイトで完全なドキュメント、ガイド、例を参照してください。
また、Crawlee の TypeScript 実装も用意されており、これを探索してプロジェクトに利用できます。詳細については、GitHub 上の Crawlee for JS/TS の GitHub リポジトリにアクセスしてください。
詳細については、Crawlee ドキュメントの「はじめに」チュートリアルを参照することをお勧めします。
Crawlee は、 crawlee
PyPI パッケージとして利用できます。コア機能は基本パッケージに含まれており、パッケージ サイズと依存関係を最小限に抑えるための追加機能がオプションとして利用可能です。すべての機能を備えた Crawlee をインストールするには、次のコマンドを実行します。
pip install ' crawlee[all] '
次に、Playwright の依存関係をインストールします。
playwright install
Crawlee が正常にインストールされていることを確認します。
python -c ' import crawlee; print(crawlee.__version__) '
インストール手順の詳細については、ドキュメントのセットアップ ページを参照してください。
Crawlee を使い始める最も簡単な方法は、Crawlee CLI を使用し、準備されたテンプレートの 1 つを選択することです。まず、Pipx がインストールされていることを確認します。
pipx --help
次に、CLI を実行して、使用可能なテンプレートから選択します。
pipx run crawlee create my-crawler
すでにcrawlee
がインストールされている場合は、次のコマンドを実行してスピンアップできます。
crawlee create my-crawler
ここでは、Crawlee でさまざまなタイプのクローラーを使い始めるのに役立ついくつかの実践的な例を示します。各例では、単純な HTML ページを処理する必要があるか、JavaScript を多用するサイトと対話する必要があるかなど、特定の使用例に合わせてクローラーをセットアップして実行する方法を示します。クローラーを実行すると、現在の作業ディレクトリにstorage/
ディレクトリが作成されます。
BeautifulSoupCrawler
HTTP ライブラリを使用して Web ページをダウンロードし、HTML で解析されたコンテンツをユーザーに提供します。デフォルトでは、HTTP 通信にはHttpxHttpClient
使用し、HTML の解析には BeautifulSoup を使用します。 HTML コンテンツからデータを効率的に抽出する必要があるプロジェクトに最適です。このクローラーはブラウザを使用しないため、非常に優れたパフォーマンスを発揮します。ただし、コンテンツを取得するためにクライアント側の JavaScript を実行する必要がある場合、これでは十分ではなく、 PlaywrightCrawler
使用する必要があります。また、このクローラーを使用したい場合は、 beautifulsoup
extra を使用してcrawlee
必ずインストールしてください。
import asyncio
from crawlee . beautifulsoup_crawler import BeautifulSoupCrawler , BeautifulSoupCrawlingContext
async def main () -> None :
crawler = BeautifulSoupCrawler (
# Limit the crawl to max requests. Remove or increase it for crawling all links.
max_requests_per_crawl = 10 ,
)
# Define the default request handler, which will be called for every request.
@ crawler . router . default_handler
async def request_handler ( context : BeautifulSoupCrawlingContext ) -> None :
context . log . info ( f'Processing { context . request . url } ...' )
# Extract data from the page.
data = {
'url' : context . request . url ,
'title' : context . soup . title . string if context . soup . title else None ,
}
# Push the extracted data to the default dataset.
await context . push_data ( data )
# Enqueue all links found on the page.
await context . enqueue_links ()
# Run the crawler with the initial list of URLs.
await crawler . run ([ 'https://crawlee.dev' ])
if __name__ == '__main__' :
asyncio . run ( main ())
PlaywrightCrawler
、ヘッドレス ブラウザを使用して Web ページをダウンロードし、データ抽出用の API を提供します。これは、ヘッドレス ブラウザーを管理するために設計された自動化ライブラリである Playwright に基づいて構築されています。コンテンツ生成のためにクライアント側の JavaScript に依存する Web ページ、または JavaScript 駆動のコンテンツとの対話を必要とするタスクの取得に優れています。 JavaScript の実行が不要な場合、またはより高いパフォーマンスが必要なシナリオの場合は、 BeautifulSoupCrawler
の使用を検討してください。また、このクローラを使用したい場合は、 playwright
extra を使用してcrawlee
必ずインストールしてください。
import asyncio
from crawlee . playwright_crawler import PlaywrightCrawler , PlaywrightCrawlingContext
async def main () -> None :
crawler = PlaywrightCrawler (
# Limit the crawl to max requests. Remove or increase it for crawling all links.
max_requests_per_crawl = 10 ,
)
# Define the default request handler, which will be called for every request.
@ crawler . router . default_handler
async def request_handler ( context : PlaywrightCrawlingContext ) -> None :
context . log . info ( f'Processing { context . request . url } ...' )
# Extract data from the page.
data = {
'url' : context . request . url ,
'title' : await context . page . title (),
}
# Push the extracted data to the default dataset.
await context . push_data ( data )
# Enqueue all links found on the page.
await context . enqueue_links ()
# Run the crawler with the initial list of requests.
await crawler . run ([ 'https://crawlee.dev' ])
if __name__ == '__main__' :
asyncio . run ( main ())
Crawlee ドキュメントの「サンプル」ページで、その他の幅広い使用例やデモンストレーションをご覧ください。
Web スクレイピングとクローリングに Crawlee が推奨されるのはなぜですか?
Crawlee はオープンソースでどこでも実行できますが、Apify によって開発されているため、Apify プラットフォーム上でのセットアップとクラウドでの実行が簡単です。 Crawlee を Apify プラットフォームにデプロイする方法の詳細については、Apify SDK Web サイトにアクセスしてください。
Crawlee でバグや問題を見つけた場合は、GitHub に問題を送信してください。質問がある場合は、Stack Overflow または GitHub Discussions で質問するか、Discord サーバーに参加してください。
あなたのコードの貢献は大歓迎です。そして、あなたは永遠に称賛されるでしょう!改善のアイデアがある場合は、問題を送信するか、プル リクエストを作成してください。貢献ガイドラインと行動規範については、CONTRIBUTING.md を参照してください。
このプロジェクトは、Apache License 2.0 に基づいてライセンスされています。詳細については、LICENSE ファイルを参照してください。