AIのために作られたWebスクレーパーとシンプルさを念頭に置いています。 CLIとして並列化できるCLIとして実行され、高品質のマークダウンコンテンツを出力します。
共有:
スクレーパー:
インデクサー:
# Install the package
python3 -m pip install scrape-it-now
# Run the CLI
scrape-it-now --help CLI(バックエンドサービスへの認証を含む)を構成するには、環境変数、 .envファイル、またはコマンドラインオプションを使用します。
Python 3.13以降でアプリケーションを実行する必要があります。このバージョンがインストールされていない場合、簡単にインストールする方法はpyenvです。
# Download the source code
git clone https://github.com/clemlesne/scrape-it-now.git
# Move to the directory
cd scrape-it-now
# Run install scripts
make install dev
# Run the CLI
scrape-it-now --helpAzure BlobストレージとAzureキューストレージでの使用:
# Azure Storage configuration
export AZURE_STORAGE_ACCESS_KEY=xxx
export AZURE_STORAGE_ACCOUNT_NAME=xxx
# Run the job
scrape-it-now scrape run https://nytimes.comローカルディスクブロブとローカルディスクキューでの使用:
# Local disk configuration
export BLOB_PROVIDER=local_disk
export QUEUE_PROVIDER=local_disk
# Run the job
scrape-it-now scrape run https://nytimes.com例:
❯ scrape-it-now scrape run https://nytimes.com
2024-11-08T13:18:49.169320Z [info ] Start scraping job lydmtyz
2024-11-08T13:18:49.169392Z [info ] Installing dependencies if needed, this may take a few minutes
2024-11-08T13:18:52.542422Z [info ] Queued 1/1 URLs
2024-11-08T13:18:58.509221Z [info ] Start processing https://nytimes.com depth=1 process=scrape-lydmtyz-4 task=63dce50
2024-11-08T13:19:04.173198Z [info ] Loaded 154554 ads and trackers process=scrape-lydmtyz-4
2024-11-08T13:19:16.393045Z [info ] Queued 310/311 URLs depth=1 process=scrape-lydmtyz-4 task=63dce50
2024-11-08T13:19:16.393323Z [info ] Scraped depth=1 process=scrape-lydmtyz-4 task=63dce50
...頻繁なオプションは次のとおりです。
Options | 説明 | Environment variable |
|---|---|---|
--azure-storage-access-key-asak | Azureストレージアクセスキー | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | Azureストレージアカウント名 | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | ブロブプロバイダー | BLOB_PROVIDER |
--job-name-jn | 求人名 | JOB_NAME |
--max-depth-md | 最大深度 | MAX_DEPTH |
--queue-provider-qp | キュープロバイダー | QUEUE_PROVIDER |
--save-images-si | 画像を保存します | SAVE_IMAGES |
--save-screenshot-ss | スクリーンショットを保存します | SAVE_SCREENSHOT |
--whitelist-w | ホワイトリスト | WHITELIST |
利用可能なすべてのオプションに関するドキュメントについては、実行してください。
scrape-it-now scrape run --helpAzure Blobストレージでの使用:
# Azure Storage configuration
export AZURE_STORAGE_CONNECTION_STRING=xxx
# Show the job status
scrape-it-now scrape status [job_name]ローカルディスクブロブでの使用:
# Local disk configuration
export BLOB_PROVIDER=local_disk
# Show the job status
scrape-it-now scrape status [job_name]例:
❯ scrape-it-now scrape status lydmtyz
{ " created_at " : " 2024-11-08T13:18:52.839060Z " , " last_updated " : " 2024-11-08T13:19:16.528370Z " , " network_used_mb " :2.6666793823242188, " processed " :1, " queued " :311}頻繁なオプションは次のとおりです。
Options | 説明 | Environment variable |
|---|---|---|
--azure-storage-access-key-asak | Azureストレージアクセスキー | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | Azureストレージアカウント名 | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | ブロブプロバイダー | BLOB_PROVIDER |
利用可能なすべてのオプションに関するドキュメントについては、実行してください。
scrape-it-now scrape status --helpAzure Blobストレージ、Azureキューストレージ、Azure AI検索での使用:
# Azure OpenAI configuration
export AZURE_OPENAI_API_KEY=xxx
export AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME=xxx
export AZURE_OPENAI_EMBEDDING_DIMENSIONS=xxx
export AZURE_OPENAI_EMBEDDING_MODEL_NAME=xxx
export AZURE_OPENAI_ENDPOINT=xxx
# Azure Search configuration
export AZURE_SEARCH_API_KEY=xxx
export AZURE_SEARCH_ENDPOINT=xxx
# Azure Storage configuration
export AZURE_STORAGE_ACCESS_KEY=xxx
export AZURE_STORAGE_ACCOUNT_NAME=xxx
# Run the job
scrape-it-now index run [job_name]ローカルディスクブロブ、ローカルディスクキュー、Azure AI検索での使用:
# Azure OpenAI configuration
export AZURE_OPENAI_API_KEY=xxx
export AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME=xxx
export AZURE_OPENAI_EMBEDDING_DIMENSIONS=xxx
export AZURE_OPENAI_EMBEDDING_MODEL_NAME=xxx
export AZURE_OPENAI_ENDPOINT=xxx
# Azure Search configuration
export AZURE_SEARCH_API_KEY=xxx
export AZURE_SEARCH_ENDPOINT=xxx
# Local disk configuration
export BLOB_PROVIDER=local_disk
export QUEUE_PROVIDER=local_disk
# Run the job
scrape-it-now index run [job_name]例:
❯ scrape-it-now index run lydmtyz
2024-11-08T13:20:37.129411Z [info ] Start indexing job lydmtyz
2024-11-08T13:20:38.945954Z [info ] Start processing https://nytimes.com process=index-lydmtyz-4 task=63dce50
2024-11-08T13:20:39.162692Z [info ] Chunked into 7 parts process=index-lydmtyz-4 task=63dce50
2024-11-08T13:20:42.407391Z [info ] Indexed 7 chunks process=index-lydmtyz-4 task=63dce50
...頻繁なオプションは次のとおりです。
Options | 説明 | Environment variable |
|---|---|---|
--azure-openai-api-key-aoak | Azure Openai APIキー | AZURE_OPENAI_API_KEY |
--azure-openai-embedding-deployment-name-aoedn | Azure Openai埋め込み展開名 | AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME |
--azure-openai-embedding-dimensions-aoed | Azure Openai埋め込み寸法 | AZURE_OPENAI_EMBEDDING_DIMENSIONS |
--azure-openai-embedding-model-name-aoemn | Azure Openai埋め込みモデル名 | AZURE_OPENAI_EMBEDDING_MODEL_NAME |
--azure-openai-endpoint-aoe | Azure Openaiエンドポイント | AZURE_OPENAI_ENDPOINT |
--azure-search-api-key-asak | Azure検索APIキー | AZURE_SEARCH_API_KEY |
--azure-search-endpoint-ase | Azure検索エンドポイント | AZURE_SEARCH_ENDPOINT |
--azure-storage-access-key-asak | Azureストレージアクセスキー | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | Azureストレージアカウント名 | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | ブロブプロバイダー | BLOB_PROVIDER |
--queue-provider-qp | キュープロバイダー | QUEUE_PROVIDER |
利用可能なすべてのオプションに関するドキュメントについては、実行してください。
scrape-it-now index run --help ---
タイトル:Azureストレージを使用したスクレイププロセス
---
グラフlr
cli ["cli"]
web ["website"]
サブグラフ「Azureキューストレージ」
to_chunk ["to chunk"]
to_scrape ["scrape"]
終わり
サブグラフ「Azure Blobストレージ」
サブグラフ「コンテナ」
ジョブ[「ジョブ」]
スクレイプ[「削り取られた」]
state ["state"]
終わり
終わり
CLI-(1)プルメッセージ - > to_scrape
CLI-(2)キャッシュを取得 - >スクレイプ
CLI-(3)Browse-> Web
CLI-(4)キャッシュを更新 - >スクレイプ
CLI-(5)プッシュ状態 - >状態
CLI-(6)メッセージを追加 - > to_scrape
CLI-(7)メッセージを追加 - > to_chunk
CLI-(8)更新状態 - >ジョブ
---
タイトル:AzureストレージとAzure AI検索でスクレイププロセス
---
グラフlr
検索["azure ai search"]]
cli ["cli"]
埋め込み["Azure Openai Embeddings"]]
サブグラフ「Azureキューストレージ」
to_chunk ["to chunk"]
終わり
サブグラフ「Azure Blobストレージ」
サブグラフ「コンテナ」
スクレイプ[「削り取られた」]
終わり
終わり
CLI-(1)プルメッセージ - > to_chunk
CLI-(2)キャッシュを取得 - >スクレイプ
CLI-(3)チャンク - > CLI
CLI-(4)埋め込み - >埋め込み
CLI-(5)検索へのプッシュ - >検索
ブロブストレージはフォルダーに編成されています:
[job_name]-scraping/ # Job name (either defined by the user or generated)
scraped/ # All the data from the pages
[page_id]/ # Assets from a page
screenshot.jpeg # Screenshot (if enabled)
[image_id].[ext] # Image binary (if enabled)
[image_id].json # Image metadata (if enabled)
[page_id].json # Data from a page
state/ # Job states (cache & parallelization)
[page_id] # Page state
job.json # Job state (aggregated stats)ページデータはAPIと見なされ(次のメジャーバージョンまで壊れません)、JSON形式で保存されます。
{
"created_at" : " 2024-09-11T14:06:43.566187Z " ,
"redirect" : " https://www.nytimes.com/interactive/2024/podcasts/serial-season-four-guantanamo.html " ,
"status" : 200 ,
"url" : " https://www.nytimes.com/interactive/2024/podcasts/serial-season-four-guantanamo.html " ,
"content" : " ## Listen to the trailer for Serial Season 4... " ,
"etag" : null ,
"links" : [
" https://podcasts.apple.com/us/podcast/serial/id917918570 " ,
" https://music.amazon.com/podcasts/d1022069-8863-42f3-823e-857fd8a7b616/serial?ref=dm_sh_OVBHkKYvW1poSzCOsBqHFXuLc " ,
...
],
"metas" : {
"description" : " “Serial” returns with a history of Guantánamo told by people who lived through key moments in Guantánamo’s evolution, who know things the rest of us don’t about what it’s like to be caught inside an improvised justice system. " ,
"articleid" : " 100000009373583 " ,
"twitter:site" : " @nytimes " ,
...
},
"network_used_mb" : 1.041460037231445 ,
"raw" : " <head>...</head><body>...</body> " ,
"valid_until" : " 2024-09-11T14:11:37.790570Z "
}次に、インデックス付きデータはAzure AI検索に保存されます。
| 分野 | タイプ | 説明 |
|---|---|---|
chunck_number | Edm.Int32 | 0からxまでのチャンク番号 |
content | Edm.String | Chunckコンテンツ |
created_at | Edm.DateTimeOffset | ソーススクレイプ日付 |
id | Edm.String | chunck id |
title | Edm.String | ソースページタイトル |
url | Edm.String | ソースページURL |
ホワイトリストオプションでは、ドメインに制限し、サブパスを無視できます。それは正規表現のリストです:
domain1,regexp1,regexp2 domain2,regexp3例として:
whitelist learn.microsoft.comへ:
learn.microsoft.com whitelist learn.microsoft.comおよびgo.microsoft.comに、しかし/en-us除くすべてのサブパスを無視してください。
learn.microsoft.com, ^ /(?!en-us). * go.microsoft.comCLIを簡単に構成するには、 .envファイルからソース環境変数を設定します。たとえば、 --azure-storage-access-keyオプションの場合:
AZURE_STORAGE_ACCESS_KEY=xxx複数の値を受け入れる引数については、スペース分離リストを使用します。たとえば、 --whitelistオプションの場合:
WHITELIST=learn . microsoft . com go . microsoft . comCache Directotyはオペレーティングシステムに依存します。
~/.config/scrape-it-now (unix)~/Library/Application Support/scrape-it-now (macos)C:Users<user>AppDataRoamingscrape-it-now (windows)ブラウザバイナリは、各実行時に自動的にダウンロードまたは更新されます。ブラウザはChromiumであり、構成できません(別のブラウザが必要な場合は、お気軽に問題を開いてください)、約450MBの重みがあります。キャッシュはキャッシュディレクトリに保存されます。
ローカルディスクストレージは、BLOBとキューの両方に使用されます。生産の使用には推奨されません。これは、簡単にスケーラブルではなく、誤りがないためです。テストと開発やAzure Servicesを使用できない場合に役立ちます。
実装:
プロキシはアプリケーションに実装されていません。ネットワークセキュリティをアプリケーションレベルから達成することはできません。 VPN(例:サードパーティ)またはプロキシサービス(居住手続き、TORなど)を使用して、匿名性を確保し、システムファイアウォールを構成してアプリケーションネットワークアクセスを制限します。
アプリケーションはPypiにパッケージ化されるため、コンテナに簡単にバンドルできます。スタートごとに、アプリケーションは依存関係(ブラウザなど)をダウンロードし、キャッシュします。コマンドscrape-it-now scrape install実行することで、事前にロードできます。
パフォーマンスのための優れたテクニックは、それぞれの複数のコンテナを実行することにより、スクレイピングとインデックス作成のジョブを並列化することもできます。これは、キュースケーラーを構成することにより、Kedaで達成できます。