Der Web -Schaber wurde für KI und Einfachheit im Sinn. Es wird als CLI ausgeführt, die parallelisiert werden kann und hochwertige Markdown-Inhalte ausgibt.
Geteilt:
Schaber:
Indexer:
# Install the package
python3 -m pip install scrape-it-now
# Run the CLI
scrape-it-now --help Um die CLI (einschließlich Authentifizierung an den Backend -Diensten) zu konfigurieren, verwenden Sie Umgebungsvariablen, eine .env -Datei- oder Befehlszeilenoptionen.
Die Anwendung muss mit Python 3.13 oder höher ausgeführt werden. Wenn diese Version nicht installiert ist, ist eine einfache Möglichkeit, sie zu installieren.
# 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 --helpVerwendung mit Azure Blob -Speicher und Azure Warteschlangespeicher:
# 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.comNutzung mit lokalem Festplattenblob und lokaler Scheibenwarteschlange:
# Local disk configuration
export BLOB_PROVIDER=local_disk
export QUEUE_PROVIDER=local_disk
# Run the job
scrape-it-now scrape run https://nytimes.comBeispiel:
❯ 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
...Die häufigsten Optionen sind:
Options | Beschreibung | Environment variable |
|---|---|---|
--azure-storage-access-key-asak | Azure -Speicherzugriffsschlüssel | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | Azure -Speicherkontontoname | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | Blob -Anbieter | BLOB_PROVIDER |
--job-name-jn | Jobname | JOB_NAME |
--max-depth-md | Maximale Tiefe | MAX_DEPTH |
--queue-provider-qp | Warteschlangenanbieter | QUEUE_PROVIDER |
--save-images-si | Bilder speichern | SAVE_IMAGES |
--save-screenshot-ss | Screenshot speichern | SAVE_SCREENSHOT |
--whitelist-w | Whitelist | WHITELIST |
Für Dokumentation zu allen verfügbaren Optionen führen Sie aus:
scrape-it-now scrape run --helpVerwendung mit Azure Blob -Speicher:
# Azure Storage configuration
export AZURE_STORAGE_CONNECTION_STRING=xxx
# Show the job status
scrape-it-now scrape status [job_name]Nutzung mit lokalem Disk Blob:
# Local disk configuration
export BLOB_PROVIDER=local_disk
# Show the job status
scrape-it-now scrape status [job_name]Beispiel:
❯ 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}Die häufigsten Optionen sind:
Options | Beschreibung | Environment variable |
|---|---|---|
--azure-storage-access-key-asak | Azure -Speicherzugriffsschlüssel | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | Azure -Speicherkontontoname | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | Blob -Anbieter | BLOB_PROVIDER |
Für Dokumentation zu allen verfügbaren Optionen führen Sie aus:
scrape-it-now scrape status --helpVerwendung mit Azure Blob -Speicher, Azure -Warteschlangenspeicher und Azure AI -Suche:
# 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]Nutzung mit lokalem Festplattenblob, lokaler Festplattenwarteschlange und Azure AI -Suche:
# 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]Beispiel:
❯ 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
...Die häufigsten Optionen sind:
Options | Beschreibung | Environment variable |
|---|---|---|
--azure-openai-api-key-aoak | Azure Openai API -Schlüssel | AZURE_OPENAI_API_KEY |
--azure-openai-embedding-deployment-name-aoedn | Azure Openai einbettet den Einsatznamen ein | AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME |
--azure-openai-embedding-dimensions-aoed | Azure Openai einbetten Dimensionen | AZURE_OPENAI_EMBEDDING_DIMENSIONS |
--azure-openai-embedding-model-name-aoemn | Azure Openai Einbettungsmodellname | AZURE_OPENAI_EMBEDDING_MODEL_NAME |
--azure-openai-endpoint-aoe | Azure Openai Endpoint | AZURE_OPENAI_ENDPOINT |
--azure-search-api-key-asak | Azure -Such -API -Schlüssel | AZURE_SEARCH_API_KEY |
--azure-search-endpoint-ase | Azure -Suchendpunkt | AZURE_SEARCH_ENDPOINT |
--azure-storage-access-key-asak | Azure -Speicherzugriffsschlüssel | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | Azure -Speicherkontontoname | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | Blob -Anbieter | BLOB_PROVIDER |
--queue-provider-qp | Warteschlangenanbieter | QUEUE_PROVIDER |
Für Dokumentation zu allen verfügbaren Optionen führen Sie aus:
scrape-it-now index run --help ---
Titel: Kratzerprozess mit Azure -Speicher
---
Graph LR
cli ["cli"]
Web ["Website"]
Subgraph "Azure Warteschlangespeicher"
to_chunk ["to Chunk"]
to_scape ["zu kratzen"]
Ende
Subgraph "Azure Blob Storage"
Subgraph "Container"
Job ["Job"]
Scraped ["Scraped"]
Staat ["Staat"]
Ende
Ende
cli -(1) Meldung ziehen -> to_scape
CLI -(2) Cache erhalten -> abgekratzt
CLI -(3) Durchsuchen -> Web
CLI -(4) Cache aktualisieren -> abgekratzt
CLI -(5) State -> Staat
CLI -(6) Meldung hinzufügen -> to_scape
CLI -(7) Meldung hinzufügen -> to_chunk
CLI -(8) Status aktualisieren -> Job
---
Titel: Kratzenprozess mit Azure -Speicher und Azure AI -Suche
---
Graph LR
Suche ["Azure AI Search"]
cli ["cli"]
Einbettungen ["Azure OpenAi Einbettung"]
Subgraph "Azure Warteschlangespeicher"
to_chunk ["to Chunk"]
Ende
Subgraph "Azure Blob Storage"
Subgraph "Container"
Scraped ["Scraped"]
Ende
Ende
cli -(1) Meldung ziehen -> to_chunk
CLI -(2) Cache erhalten -> abgekratzt
cli -(3) Chunk -> cli
CLI -(4) Einbettung -> Einbettungen
CLI -(5) Drücken Sie auf die Suche -> Suche
Die Blob -Speicherung ist in Ordnern organisiert:
[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)Seitendaten werden als API betrachtet (werden erst in der nächsten Hauptversion brechen) und im JSON -Format gespeichert:
{
"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 "
}Anschließend werden indizierte Daten in der Azure AI -Suche gespeichert:
| Feld | Typ | Beschreibung |
|---|---|---|
chunck_number | Edm.Int32 | Chunknummer von 0 bis x |
content | Edm.String | Chunckinhalt |
created_at | Edm.DateTimeOffset | Quellenkratzdatum |
id | Edm.String | Chunck id |
title | Edm.String | Quellseitenentitel |
url | Edm.String | Quellseite URL |
Die Whitelist -Option ermöglicht es, eine Domäne auf eine Domäne zu beschränken und Subpfade zu ignorieren. Es ist eine Liste regelmäßiger Ausdrücke:
domain1,regexp1,regexp2 domain2,regexp3Beispiele:
An Whitelist learn.microsoft.com :
learn.microsoft.com An Whitelist learn.microsoft.com und go.microsoft.com , ignorieren Sie jedoch alle Subpfade außer /en-us :
learn.microsoft.com, ^ /(?!en-us). * go.microsoft.com So konfigurieren Sie die CLI, Quellumgebungsvariablen aus einer .env -Datei. Zum Beispiel für die Option --azure-storage-access-key :
AZURE_STORAGE_ACCESS_KEY=xxx Verwenden Sie für Argumente, die mehrere Werte akzeptieren, eine von Space getrennte Liste. Zum Beispiel für die Option --whitelist :
WHITELIST=learn . microsoft . com go . microsoft . comDer Cache -Directoty hängt vom Betriebssystem ab:
~/.config/scrape-it-now (unix)~/Library/Application Support/scrape-it-now (macOS)C:Users<user>AppDataRoamingscrape-it-now (Windows)Browser -Binärdateien werden bei jedem Lauf automatisch heruntergeladen oder aktualisiert. Browser ist Chrom und es ist nicht konfigurierbar (zögern Sie nicht, ein Problem zu öffnen, wenn Sie einen weiteren Browser benötigen). Der Cache wird im Cache -Verzeichnis gespeichert.
Lokale Festplattenspeicher wird sowohl für Blob als auch für die Warteschlange verwendet. Es wird nicht für den Produktionsgebrauch empfohlen, da es nicht leicht skalierbar und nicht fehlertolerant ist. Es ist nützlich für das Testen und Entwicklung oder wenn Sie Azure -Dienste nicht nutzen können.
Durchführung:
Proxys werden in der Anwendung nicht implementiert. Die Netzwerksicherheit kann nicht aus der Anwendungsebene erreicht werden. Verwenden Sie ein VPN (z. B. Ihr Drittanbieter) oder einen Proxy-Service (z. B. Residential Procies, Tor), um die Anonymität zu sichern und die Systemfeuerwall zu konfigurieren, um den Zugriff auf das Anwendungsnetzwerk darauf zu begrenzen.
Da die Anwendung auf PYPI verpackt ist, kann sie leicht mit einem Behälter gebündelt werden. Zu jedem Start lädt die Anwendung die Abhängigkeiten (Browser usw.) herunter und speichert sie. Sie können sie vorab herunterladen, indem Sie den Befehlskratzer scrape-it-now scrape install ausführen.
Eine gute Technik für die Leistung würde auch die Parallelung der Abkratzen und Indexierungsjobs durch Ausführen mehrerer Container von jeweils parallelisieren. Dies kann mit Keda durch Konfiguration eines Warteschlangenskalers erreicht werden.