عن المشروع
Scrapling هو إطار عمل تكيُّفي لاستخراج بيانات الويب بلغة بايثون يغطي كل شيء بدءًا من طلبات الصفحة الواحدة وصولًا إلى عمليات الزحف المتزامنة واسعة النطاق. وهو مصمم للمطورين ومستخرِجي بيانات الويب الذين يحتاجون إلى استخراج بيانات مرن دون إعادة كتابة المحدِّدات (selectors) باستمرار عند تغيُّر المواقع.
تشمل القدرات الأساسية ما يلي:
- التحليل التكيُّفي: يتذكَّر المحلِّل مواضع العناصر ويمكنه إعادة تحديد مواقعها بعد إعادة تصميم المواقع باستخدام المطابقة القائمة على التشابه، مع خيارات مثل adaptive=True أو auto_save=True لاختيار CSS مرن.
- جالبات بيانات مرنة: جالبات HTTP قادرة على انتحال بصمات TLS والترويسات الخاصة بالمتصفحات، وجالبات أتمتة المتصفح للصفحات الديناميكية، وجالبة خفية تهدف إلى تجاوز أنظمة مكافحة الروبوتات الشائعة مثل Cloudflare Turnstile. جميع الجالبات توفِّر صيغًا غير متزامنة وفئات جلسات دائمة.
- إطار عمل كامل للعناكب: واجهة برمجية شبيهة بـ Scrapy مع start_urls، ودوال parse غير متزامنة، وزحف متزامن، وتحديد معدل لكل نطاق، ونقاط تفتيش للإيقاف والاستئناف، وإخراج عناصر متدفق، واكتشاف الطلبات المحظورة، وتحديد معدل تلقائي، ودعم robots.txt، ووضع تطوير يعيد تشغيل الاستجابات المخزَّنة مؤقتًا.
- إدارة الوكلاء والجلسات: تدوير مدمج للوكلاء، وتجاوزات للوكيل لكل طلب، ومنع تسرُّب DNS عبر DNS-over-HTTPS، واتصال اختياري بمتصفحات بعيدة عبر CDP.
- تكاملات الذكاء الاصطناعي والوكلاء: يتيح خادم MCP لمساعدي الذكاء الاصطناعي الاستخراج عبر جالبات HTTP أو الديناميكية أو الخفية، مع إزالة التوجيهات (prompts) من الصفحات لتقليل مخاطر الحقن؛ وتساعد مهارة الوكيل وكلاء البرمجة على استخدام الواجهة البرمجية الحالية؛ وتُنتج page.markdown() تنسيق Markdown نظيفًا جاهزًا لنماذج اللغة الكبيرة/التوليد المعزَّز بالاسترجاع دون الحاجة إلى نموذج لغوي في الحلقة.
- تجربة المطور: صدفة تفاعلية قائمة على IPython، واستخراج عبر CLI دون كتابة كود، وتنقُّل غني في DOM، وتوليد تلقائي للمحدِّدات، وتصدير مدمج بصيغ JSON/JSONL/CSV/XML، وتكامل مباشر مع دوال Scrapy.
يحافظ المشروع على تلميحات الأنواع الكاملة، والتحقق الآلي من الأنواع، وصورة Docker تتضمن جميع المتصفحات، وتغطية اختبارية عبر المكتبة.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.