เครื่องขูดเว็บทำขึ้นเพื่อ AI และความเรียบง่ายในใจ มันทำงานเป็น 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 --helpการใช้งานกับที่เก็บข้อมูล Azure Blob และ Azure Queue Storage:
# 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 Storage Access | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | ชื่อบัญชี Azure Storage | 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 |
สำหรับเอกสารเกี่ยวกับตัวเลือกที่มีอยู่ทั้งหมด Run:
scrape-it-now scrape run --helpการใช้งานกับ Azure Blob Storage:
# Azure Storage configuration
export AZURE_STORAGE_CONNECTION_STRING=xxx
# Show the job status
scrape-it-now scrape status [job_name]การใช้งานกับดิสก์ Blob:
# 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 Storage Access | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | ชื่อบัญชี Azure Storage | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | ผู้ให้บริการหยด | BLOB_PROVIDER |
สำหรับเอกสารเกี่ยวกับตัวเลือกที่มีอยู่ทั้งหมด Run:
scrape-it-now scrape status --helpการใช้งานกับที่เก็บข้อมูล Azure Blob, Azure Queue Storage และ Azure AI Search:
# 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]การใช้งานกับ Blob ดิสก์ท้องถิ่นคิวดิสก์ท้องถิ่นและ Azure AI Search:
# 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 Embedding การปรับใช้ชื่อ | AZURE_OPENAI_EMBEDDING_DEPLOYMENT_NAME |
--azure-openai-embedding-dimensions-aoed | Azure Openai Embedding Dimensions | AZURE_OPENAI_EMBEDDING_DIMENSIONS |
--azure-openai-embedding-model-name-aoemn | Azure Openai Embedding Model ชื่อ | AZURE_OPENAI_EMBEDDING_MODEL_NAME |
--azure-openai-endpoint-aoe | จุดสิ้นสุดของ Azure Openai | AZURE_OPENAI_ENDPOINT |
--azure-search-api-key-asak | Azure Search API Key | AZURE_SEARCH_API_KEY |
--azure-search-endpoint-ase | จุดสิ้นสุดการค้นหา Azure | AZURE_SEARCH_ENDPOINT |
--azure-storage-access-key-asak | คีย์การเข้าถึง Azure Storage Access | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | ชื่อบัญชี Azure Storage | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | ผู้ให้บริการหยด | BLOB_PROVIDER |
--queue-provider-qp | ผู้ให้บริการคิว | QUEUE_PROVIDER |
สำหรับเอกสารเกี่ยวกับตัวเลือกที่มีอยู่ทั้งหมด Run:
scrape-it-now index run --help -
ชื่อเรื่อง: กระบวนการขูดด้วย Azure Storage
-
กราฟ LR
cli ["cli"]
เว็บ ["เว็บไซต์"]
Subgraph "Azure Queue Storage"
to_chunk ["to chunk"]
to_scrape ["to scrape"]
จบ
Subgraph "Azure Blob Storage"
subgraph "container"
งาน ["งาน"]
scraped ["scraped"]
รัฐ ["รัฐ"]
จบ
จบ
CLI -(1) ข้อความดึง -> to_scrape
CLI -(2) รับแคช -> Scraped
CLI -(3) เรียกดู -> เว็บ
CLI -(4) อัปเดตแคช -> Scraped
CLI -(5) PUSH State -> State
CLI -(6) เพิ่มข้อความ -> to_scrape
CLI -(7) เพิ่มข้อความ -> to_chunk
CLI -(8) สถานะอัปเดต -> งาน
-
ชื่อเรื่อง: กระบวนการขูดด้วย Azure Storage และ Azure AI Search
-
กราฟ LR
ค้นหา ["Azure AI Search"]
cli ["cli"]
EMBEDDINGS ["Azure Openai Embeddings"]
Subgraph "Azure Queue Storage"
to_chunk ["to chunk"]
จบ
Subgraph "Azure Blob Storage"
subgraph "container"
scraped ["scraped"]
จบ
จบ
CLI -(1) ข้อความดึง -> to_chunk
CLI -(2) รับแคช -> Scraped
CLI -(3) ก้อน -> CLI
CLI -(4) ฝัง -> EMBEDDING
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 Search:
| สนาม | พิมพ์ | คำอธิบาย |
|---|---|---|
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 หน้าต้นทาง |
ตัวเลือก Whitelist อนุญาตให้ จำกัด โดเมนและละเว้นเส้นทางย่อย มันเป็นรายการของการแสดงออกปกติ:
domain1,regexp1,regexp2 domain2,regexp3ตัวอย่าง:
ถึง whitelist learn.microsoft.com :
learn.microsoft.com ถึงผู้อนุญาตให้ learn.microsoft.com และ go.microsoft.com แต่ไม่สนใจเส้นทางย่อยทั้งหมดยกเว้น /en-us :
learn.microsoft.com, ^ /(?!en-us). * go.microsoft.com ในการกำหนดค่า CLI ได้อย่างง่ายดายตัวแปรสภาพแวดล้อมแหล่งที่มาจากไฟล์ .env ตัวอย่างเช่นสำหรับตัวเลือก --azure-storage-access-key :
AZURE_STORAGE_ACCESS_KEY=xxx สำหรับอาร์กิวเมนต์ที่ยอมรับหลายค่าให้ใช้รายการที่คั่นด้วยอวกาศ ตัวอย่างเช่นตัวเลือก --whitelist :
WHITELIST=learn . microsoft . com go . microsoft . comDirectoty แคชขึ้นอยู่กับระบบปฏิบัติการ:
~/.config/scrape-it-now (unix)~/Library/Application Support/scrape-it-now (MacOS)C:Users<user>AppDataRoamingscrape-it-now (Windows)เบราว์เซอร์ไบนารีจะถูกดาวน์โหลดหรืออัปเดตโดยอัตโนมัติในการรันแต่ละครั้ง เบราว์เซอร์เป็นโครเมียมและไม่สามารถกำหนดค่าได้ (อย่าลังเลที่จะเปิดปัญหาหากคุณต้องการเบราว์เซอร์อื่น) มันมีน้ำหนักประมาณ 450MB แคชจะถูกเก็บไว้ในไดเรกทอรีแคช
ที่เก็บดิสก์ท้องถิ่นใช้สำหรับทั้งหยดและคิว ไม่แนะนำสำหรับการใช้งานการผลิตเนื่องจากไม่สามารถปรับขนาดได้ง่ายและไม่ทนต่อความผิดพลาด มันมีประโยชน์สำหรับการทดสอบและการพัฒนาหรือเมื่อคุณไม่สามารถใช้บริการ Azure
การดำเนินการ:
พร็อกซีไม่ได้ใช้งานในแอปพลิเคชัน ความปลอดภัยของเครือข่ายไม่สามารถทำได้จากระดับแอปพลิเคชัน ใช้ VPN (เช่นบุคคลที่สามของคุณ) หรือบริการพร็อกซี (เช่น Procies ที่อยู่อาศัย, Tor) เพื่อให้แน่ใจว่าไม่เปิดเผยตัวตนและกำหนดค่าไฟร์วอลล์ระบบเพื่อ จำกัด การเข้าถึงเครือข่ายแอปพลิเคชัน
เนื่องจากแอปพลิเคชันถูกบรรจุไว้ใน PYPI จึงสามารถรวมเข้ากับภาชนะได้อย่างง่ายดาย ทุกครั้งที่เริ่มต้นแอปพลิเคชันจะดาวน์โหลดการพึ่งพา (เบราว์เซอร์ ฯลฯ ) และแคช คุณสามารถดาวน์โหลดล่วงหน้าได้โดยเรียกใช้คำสั่ง scrape-it-now scrape install
เทคนิคที่ดีสำหรับการแสดงจะต้องขนานกับงานการขูดและการจัดทำดัชนีโดยใช้คอนเทนเนอร์หลายตัวของแต่ละรายการ สิ่งนี้สามารถทำได้ด้วย KEDA โดยการกำหนดค่าคิว Scaler