Web Scraper dibuat untuk AI dan kesederhanaan dalam pikiran. Ini berjalan sebagai CLI yang dapat diparalelkan dan mengeluarkan konten penurunan harga berkualitas tinggi.
Dibagikan:
Pengikis:
Pengindeks:
# Install the package
python3 -m pip install scrape-it-now
# Run the CLI
scrape-it-now --help Untuk mengonfigurasi CLI (termasuk otentikasi ke layanan backend), gunakan variabel lingkungan, file .env atau opsi baris perintah.
Aplikasi harus dijalankan dengan Python 3.13 atau lebih baru. Jika versi ini tidak diinstal, cara mudah untuk menginstalnya adalah 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 --helpPenggunaan dengan penyimpanan gumpalan biru dan penyimpanan antrian 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.comPenggunaan dengan gumpalan disk lokal dan antrian disk lokal:
# Local disk configuration
export BLOB_PROVIDER=local_disk
export QUEUE_PROVIDER=local_disk
# Run the job
scrape-it-now scrape run https://nytimes.comContoh:
❯ 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
...Opsi yang paling sering adalah:
Options | Keterangan | Environment variable |
|---|---|---|
--azure-storage-access-key-asak | Kunci akses penyimpanan Azure | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | Nama Akun Penyimpanan Azure | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | Penyedia gumpalan | BLOB_PROVIDER |
--job-name-jn | Nama pekerjaan | JOB_NAME |
--max-depth-md | Kedalaman maksimum | MAX_DEPTH |
--queue-provider-qp | Penyedia antrian | QUEUE_PROVIDER |
--save-images-si | Simpan gambar | SAVE_IMAGES |
--save-screenshot-ss | Simpan tangkapan layar | SAVE_SCREENSHOT |
--whitelist-w | Daftar putih | WHITELIST |
Untuk dokumentasi di semua opsi yang tersedia, jalankan:
scrape-it-now scrape run --helpPenggunaan dengan penyimpanan gumpalan biru:
# Azure Storage configuration
export AZURE_STORAGE_CONNECTION_STRING=xxx
# Show the job status
scrape-it-now scrape status [job_name]Penggunaan dengan Blob Disk Lokal:
# Local disk configuration
export BLOB_PROVIDER=local_disk
# Show the job status
scrape-it-now scrape status [job_name]Contoh:
❯ 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}Opsi yang paling sering adalah:
Options | Keterangan | Environment variable |
|---|---|---|
--azure-storage-access-key-asak | Kunci akses penyimpanan Azure | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | Nama Akun Penyimpanan Azure | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | Penyedia gumpalan | BLOB_PROVIDER |
Untuk dokumentasi di semua opsi yang tersedia, jalankan:
scrape-it-now scrape status --helpPenggunaan dengan penyimpanan gumpalan biru, penyimpanan antrian biru dan pencarian 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]Penggunaan dengan gumpalan disk lokal, antrian disk lokal dan pencarian 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]Contoh:
❯ 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
...Opsi yang paling sering adalah:
Options | Keterangan | Environment variable |
|---|---|---|
--azure-openai-api-key-aoak | Kunci API Azure Openai | AZURE_OPENAI_API_KEY |
--azure-openai-embedding-deployment-name-aoedn | Nama penyebaran embedding empedding azure | AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME |
--azure-openai-embedding-dimensions-aoed | Dimensi embedding azure openai | AZURE_OPENAI_EMBEDDING_DIMENSIONS |
--azure-openai-embedding-model-name-aoemn | Nama model embedding azure openai | AZURE_OPENAI_EMBEDDING_MODEL_NAME |
--azure-openai-endpoint-aoe | Azure Openai Endpoint | AZURE_OPENAI_ENDPOINT |
--azure-search-api-key-asak | Azure Search API Key | AZURE_SEARCH_API_KEY |
--azure-search-endpoint-ase | Titik akhir pencarian Azure | AZURE_SEARCH_ENDPOINT |
--azure-storage-access-key-asak | Kunci akses penyimpanan Azure | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | Nama Akun Penyimpanan Azure | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | Penyedia gumpalan | BLOB_PROVIDER |
--queue-provider-qp | Penyedia antrian | QUEUE_PROVIDER |
Untuk dokumentasi di semua opsi yang tersedia, jalankan:
scrape-it-now index run --help ---
Judul: Proses Mengikis Dengan Penyimpanan Azure
---
grafik lr
cli ["cli"]
web ["situs web"]
Subgraph "Azure Antrian Storage"
to_chunk ["to chunk"]
to_scrape ["to scrape"]
akhir
Subgraph "Azure Blob Storage"
subgraph "wadah"
Pekerjaan ["Pekerjaan"]
tergores ["scraped"]
menyatakan ["negara bagian"]
akhir
akhir
CLI -(1) Tarik pesan -> to_scrape
CLI -(2) Dapatkan cache -> scraped
CLI -(3) Jelajahi -> Web
CLI -(4) Perbarui cache -> scraped
CLI -(5) Push State -> State
CLI -(6) Tambahkan pesan -> to_scrape
CLI -(7) Tambahkan pesan -> to_chunk
CLI -(8) Perbarui keadaan -> pekerjaan
---
Judul: Proses Mengikis Dengan Penyimpanan Azure dan Pencarian AI AZure
---
grafik lr
Cari ["Azure AI Search"]
cli ["cli"]
Embeddings ["Azure Openai Embeddings"]
Subgraph "Azure Antrian Storage"
to_chunk ["to chunk"]
akhir
Subgraph "Azure Blob Storage"
subgraph "wadah"
tergores ["scraped"]
akhir
akhir
CLI -(1) Tarik pesan -> to_chunk
CLI -(2) Dapatkan cache -> scraped
cli -(3) chunk -> cli
CLI -(4) Embed -> Embeddings
CLI -(5) Dorong untuk mencari -> pencarian
Penyimpanan gumpalan diatur dalam folder:
[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)Data halaman dianggap sebagai API (tidak akan rusak sampai versi utama berikutnya) dan disimpan dalam format 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 "
}Kemudian, data yang diindeks disimpan dalam pencarian AIure AI:
| Bidang | Jenis | Keterangan |
|---|---|---|
chunck_number | Edm.Int32 | Nomor potongan, dari 0 hingga x |
content | Edm.String | Konten chunck |
created_at | Edm.DateTimeOffset | Sumber Tanggal Mengikis |
id | Edm.String | ID Chunck |
title | Edm.String | Judul Halaman Sumber |
url | Edm.String | URL Halaman Sumber |
Opsi daftar putih memungkinkan untuk membatasi ke domain dan mengabaikan sub jalur. Ini adalah daftar ekspresi reguler:
domain1,regexp1,regexp2 domain2,regexp3Sebagai contoh:
Ke WhiteList learn.microsoft.com :
learn.microsoft.com Ke WhiteList learn.microsoft.com dan go.microsoft.com , tetapi abaikan semua sub jalur kecuali /en-us :
learn.microsoft.com, ^ /(?!en-us). * go.microsoft.com Untuk mengonfigurasi dengan mudah variabel lingkungan Sumber dari file .env . Misalnya, untuk opsi --azure-storage-access-key :
AZURE_STORAGE_ACCESS_KEY=xxx Untuk argumen yang menerima banyak nilai, gunakan daftar yang dipisahkan ruang. Misalnya, untuk opsi --whitelist :
WHITELIST=learn . microsoft . com go . microsoft . comCache Directoty tergantung pada sistem operasi:
~/.config/scrape-it-now (unix)~/Library/Application Support/scrape-it-now (MacOS)C:Users<user>AppDataRoamingscrape-it-now (windows)Binari browser secara otomatis diunduh atau diperbarui pada setiap proses. Browser adalah kromium dan tidak dapat dikonfigurasi (jangan ragu untuk membuka masalah jika Anda membutuhkan browser lain), bobot sekitar 450MB. Cache disimpan di direktori cache.
Penyimpanan disk lokal digunakan untuk gumpalan dan antrian. Tidak disarankan untuk penggunaan produksi, karena tidak mudah diukur, dan tidak toleran terhadap kesalahan. Ini berguna untuk pengujian dan pengembangan atau ketika Anda tidak dapat menggunakan layanan Azure.
Pelaksanaan:
Proksi tidak diimplementasikan dalam aplikasi. Keamanan jaringan tidak dapat dicapai dari tingkat aplikasi. Gunakan VPN (misalnya layanan Anda, pihak ketiga) atau proxy (misalnya Procies, Tor) untuk memastikan anonimitas dan mengkonfigurasi firewall sistem untuk membatasi akses jaringan aplikasi ke sana.
Karena aplikasi dikemas ke PYPI, dapat dengan mudah dibundel dengan wadah. Di setiap awal, aplikasi akan mengunduh dependensi (browser, dll.) Dan cache. Anda dapat melakukan download mereka dengan menjalankan scrape-it-now scrape install .
Teknik yang baik untuk kinerja juga akan memparalelkan pekerjaan pengikisan dan pengindeksan dengan menjalankan beberapa wadah masing -masing. Ini dapat dicapai dengan Keda, dengan mengkonfigurasi scaler antrian.