مكشطة الويب التي صنعت من أجل الذكاء الاصطناعي والبساطة في الاعتبار. يتم تشغيله كـ 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:
# 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 | 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 --helpالاستخدام مع تخزين Blob Azure:
# Azure Storage configuration
export AZURE_STORAGE_CONNECTION_STRING=xxx
# Show the job status
scrape-it-now scrape status [job_name]الاستخدام مع Blob Disk 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 | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | اسم حساب تخزين Azure | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | مزود Blob | BLOB_PROVIDER |
للحصول على وثائق حول جميع الخيارات المتاحة ، قم بتشغيل:
scrape-it-now scrape status --helpالاستخدام مع تخزين Azure Blob ، وتخزين قائمة انتظار Azure و 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 Disk Blob المحلي وقائمة انتظار القرص المحلية و Search Ai 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 Key | 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 Endpoint | 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 | AZURE_STORAGE_ACCESS_KEY |
--azure-storage-account-name-asan | اسم حساب تخزين Azure | AZURE_STORAGE_ACCOUNT_NAME |
--blob-provider-bp | مزود Blob | BLOB_PROVIDER |
--queue-provider-qp | موفر قائمة الانتظار | QUEUE_PROVIDER |
للحصول على وثائق حول جميع الخيارات المتاحة ، قم بتشغيل:
scrape-it-now index run --help ---
العنوان: عملية كشط مع تخزين Azure
---
الرسم البياني LR
CLI ["CLI"]
الويب ["موقع"]
فرع "تخزين قائمة انتظار Azure"
to_chunk ["إلى قطعة"]
to_scrape ["لكشط"]
نهاية
Subgraph "Azure Blob Storage"
الخرف الفرعي "حاوية"
أيوب ["الوظيفة"]
كشط ["كشط"]
الدولة ["الدولة"]
نهاية
نهاية
CLI -(1) سحب رسالة -> to_scrape
CLI -(2) احصل على ذاكرة التخزين المؤقت -> كشط
CLI -(3) تصفح -> الويب
CLI -(4) تحديث ذاكرة التخزين المؤقت -> كشط
CLI -(5) دفع الحالة -> الدولة
CLI -(6) أضف رسالة -> to_scrape
CLI -(7) أضف رسالة -> to_chunk
CLI -(8) حالة التحديث -> الوظيفة
---
العنوان: عملية كشط مع Azure Storage و Azure AI Search
---
الرسم البياني LR
البحث ["Azure AI Search"]
CLI ["CLI"]
التضمينات ["Azure Openai inbeddings"]
فرع "تخزين قائمة انتظار Azure"
to_chunk ["إلى قطعة"]
نهاية
Subgraph "Azure Blob Storage"
الخرف الفرعي "حاوية"
كشط ["كشط"]
نهاية
نهاية
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)تعتبر بيانات الصفحة واجهة برمجة تطبيقات (لن تنهار حتى الإصدار الرئيسي التالي) ويتم تخزينه بتنسيق 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للحصول على أمثلة:
إلى القائمة البيضاء 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 . comيعتمد ذاكرة التخزين المؤقت المباشر على نظام التشغيل:
~/.config/scrape-it-now (UNIX)~/Library/Application Support/scrape-it-now (MacOS)C:Users<user>AppDataRoamingscrape-it-now (Windows)يتم تنزيل أو تحديث ثنائيات المتصفح تلقائيًا في كل تشغيل. المتصفح هو كروم ولا يمكن تكوينه (لا تتردد في فتح مشكلة إذا كنت بحاجة إلى متصفح آخر) ، فهو يزيد حوالي 450 ميجابايت. يتم تخزين ذاكرة التخزين المؤقت في دليل ذاكرة التخزين المؤقت.
يتم استخدام تخزين القرص المحلي لكل من blob و Queue. لا ينصح باستخدام الإنتاج ، لأنه ليس قابلاً للتطوير بسهولة ، وليس يتحمل الأخطاء. إنه مفيد للاختبار والتطوير أو عندما لا يمكنك استخدام خدمات Azure.
تطبيق:
لم يتم تنفيذ الوكلاء في التطبيق. لا يمكن تحقيق أمان الشبكة من مستوى التطبيق. استخدم VPN (على سبيل المثال ، الطرف الثالث) أو خدمة وكيل (مثل Procies ، TOR) لضمان عدم الكشف عن هويتك وتكوين جدار الحماية للنظام للحد من وصول شبكة التطبيق إليه.
نظرًا لأن التطبيق يتم تعبئته على PYPI ، يمكن تجميعه بسهولة مع حاوية. في كل بداية ، سيقوم التطبيق بتنزيل التبعيات (المتصفح ، وما إلى ذلك) وتخزينها. يمكنك تنزيلها مسبقًا عن طريق تشغيل scrape-it-now scrape install .
من شأن التقنية الجيدة للأداء أيضًا موازاة وظائف الكشط وفهرسة عن طريق تشغيل حاويات متعددة لكل منها. يمكن تحقيق ذلك مع Keda ، من خلال تكوين Scaler في قائمة الانتظار.