يغطي Crawlee عمليات الزحف والكشط الخاصة بك من البداية إلى النهاية ويساعدك على بناء كاشطات موثوقة. سريع.
Crawlee for Python مفتوح للمتبنين الأوائل!
ستظهر برامج الزحف الخاصة بك تقريبًا مثل الإنسان وتطير تحت رادار حماية الروبوتات الحديثة حتى مع التكوين الافتراضي. يمنحك Crawlee الأدوات اللازمة للزحف على الويب بحثًا عن الروابط، واستخراج البيانات وتخزينها باستمرار بتنسيقات يمكن قراءتها آليًا، دون الحاجة إلى القلق بشأن التفاصيل الفنية. وبفضل خيارات التكوين الغنية، يمكنك تعديل أي جانب من جوانب Crawlee تقريبًا ليناسب احتياجات مشروعك إذا لم تكن الإعدادات الافتراضية كافية.
هل تريد عرض الوثائق والأدلة والأمثلة الكاملة على موقع مشروع Crawlee ؟
لدينا أيضًا تطبيق TypeScript لـ Crawlee، والذي يمكنك استكشافه واستخدامه لمشاريعك. قم بزيارة مستودع GitHub الخاص بنا لمزيد من المعلومات Crawlee for JS/TS على GitHub.
نوصي بزيارة البرنامج التعليمي للمقدمة في وثائق Crawlee لمزيد من المعلومات.
Crawlee متاح كحزمة crawlee
PyPI. يتم تضمين الوظائف الأساسية في الحزمة الأساسية، مع ميزات إضافية متاحة كإضافات اختيارية لتقليل حجم الحزمة وتبعياتها. لتثبيت Crawlee بجميع الميزات، قم بتشغيل الأمر التالي:
pip install ' crawlee[all] '
ثم قم بتثبيت تبعيات Playwright:
playwright install
تحقق من تثبيت Crawlee بنجاح:
python -c ' import crawlee; print(crawlee.__version__) '
للحصول على تعليمات التثبيت التفصيلية، راجع صفحة وثائق الإعداد.
أسرع طريقة لبدء استخدام Crawlee هي استخدام Crawlee CLI واختيار أحد القوالب المعدة. أولاً، تأكد من تثبيت Pipx:
pipx --help
ثم قم بتشغيل CLI واختر من القوالب المتاحة:
pipx run crawlee create my-crawler
إذا كان crawlee
مثبتًا لديك بالفعل، فيمكنك تشغيله عن طريق تشغيل:
crawlee create my-crawler
فيما يلي بعض الأمثلة العملية لمساعدتك في بدء استخدام أنواع مختلفة من برامج الزحف في Crawlee. يوضح كل مثال كيفية إعداد الزاحف وتشغيله لحالات استخدام محددة، سواء كنت بحاجة إلى التعامل مع صفحات HTML البسيطة أو التفاعل مع المواقع التي تستخدم JavaScript بكثرة. سيؤدي تشغيل الزاحف إلى إنشاء دليل storage/
في دليل العمل الحالي لديك.
يقوم BeautifulSoupCrawler
بتنزيل صفحات الويب باستخدام مكتبة HTTP ويوفر محتوى تم تحليله بتنسيق HTML للمستخدم. افتراضيًا، يستخدم HttpxHttpClient
لاتصالات HTTP وBeautifulSoup لتحليل HTML. إنه مثالي للمشاريع التي تتطلب استخراجًا فعالاً للبيانات من محتوى HTML. يتمتع هذا الزاحف بأداء جيد جدًا لأنه لا يستخدم متصفحًا. ومع ذلك، إذا كنت بحاجة إلى تنفيذ JavaScript من جانب العميل، للحصول على المحتوى الخاص بك، فلن يكون هذا كافيًا وستحتاج إلى استخدام PlaywrightCrawler
. وأيضًا إذا كنت تريد استخدام هذا الزاحف، فتأكد من تثبيت crawlee
مع beautifulsoup
extra.
import asyncio
from crawlee . beautifulsoup_crawler import BeautifulSoupCrawler , BeautifulSoupCrawlingContext
async def main () -> None :
crawler = BeautifulSoupCrawler (
# Limit the crawl to max requests. Remove or increase it for crawling all links.
max_requests_per_crawl = 10 ,
)
# Define the default request handler, which will be called for every request.
@ crawler . router . default_handler
async def request_handler ( context : BeautifulSoupCrawlingContext ) -> None :
context . log . info ( f'Processing { context . request . url } ...' )
# Extract data from the page.
data = {
'url' : context . request . url ,
'title' : context . soup . title . string if context . soup . title else None ,
}
# Push the extracted data to the default dataset.
await context . push_data ( data )
# Enqueue all links found on the page.
await context . enqueue_links ()
# Run the crawler with the initial list of URLs.
await crawler . run ([ 'https://crawlee.dev' ])
if __name__ == '__main__' :
asyncio . run ( main ())
يستخدم PlaywrightCrawler
متصفحًا بدون رأس لتنزيل صفحات الويب ويوفر واجهة برمجة التطبيقات (API) لاستخراج البيانات. إنه مبني على Playwright، وهي مكتبة أتمتة مصممة لإدارة المتصفحات مقطوعة الرأس. فهو يتفوق في استرداد صفحات الويب التي تعتمد على JavaScript من جانب العميل لإنشاء المحتوى، أو المهام التي تتطلب التفاعل مع المحتوى الذي يحركه JavaScript. بالنسبة للسيناريوهات التي يكون فيها تنفيذ JavaScript غير ضروري أو يتطلب أداء أعلى، فكر في استخدام BeautifulSoupCrawler
. وأيضًا إذا كنت تريد استخدام هذا الزاحف، فتأكد من تثبيت crawlee
مع playwright
Extra.
import asyncio
from crawlee . playwright_crawler import PlaywrightCrawler , PlaywrightCrawlingContext
async def main () -> None :
crawler = PlaywrightCrawler (
# Limit the crawl to max requests. Remove or increase it for crawling all links.
max_requests_per_crawl = 10 ,
)
# Define the default request handler, which will be called for every request.
@ crawler . router . default_handler
async def request_handler ( context : PlaywrightCrawlingContext ) -> None :
context . log . info ( f'Processing { context . request . url } ...' )
# Extract data from the page.
data = {
'url' : context . request . url ,
'title' : await context . page . title (),
}
# Push the extracted data to the default dataset.
await context . push_data ( data )
# Enqueue all links found on the page.
await context . enqueue_links ()
# Run the crawler with the initial list of requests.
await crawler . run ([ 'https://crawlee.dev' ])
if __name__ == '__main__' :
asyncio . run ( main ())
استكشف صفحة الأمثلة الخاصة بنا في وثائق Crawlee للتعرف على مجموعة واسعة من حالات الاستخدام الإضافية والعروض التوضيحية.
لماذا يعتبر Crawlee هو الخيار المفضل لتجميع الويب والزحف إليه؟
Crawlee هو برنامج مفتوح المصدر ويعمل في أي مكان، ولكن نظرًا لأنه تم تطويره بواسطة Apify، فمن السهل إعداده على منصة Apify وتشغيله في السحابة. تفضل بزيارة موقع Apify SDK لمعرفة المزيد حول نشر Crawlee على منصة Apify.
إذا وجدت أي خطأ أو مشكلة في Crawlee، فيرجى إرسال مشكلة على GitHub. للأسئلة، يمكنك طرحها على Stack Overflow، في مناقشات GitHub أو يمكنك الانضمام إلى خادم Discord الخاص بنا.
نرحب بمساهماتك البرمجية، وسيتم الثناء عليك إلى الأبد! إذا كانت لديك أي أفكار للتحسينات، فإما أن ترسل مشكلة أو أنشئ طلب سحب. للحصول على إرشادات المساهمة ومدونة قواعد السلوك، راجع CONTRIBUTING.md.
تم ترخيص هذا المشروع بموجب ترخيص Apache 2.0 - راجع ملف الترخيص للحصول على التفاصيل.