Scrapling: أداة كشط الويب التي تصلح نفسها بنفسها

BBetter Stack
컴퓨터/소프트웨어창업/스타트업AI/미래기술

Transcript

00:00:00هذا هو Scrapling، أداة كشط تعتمد على بايثون تحاول معالجة أسوأ جانب في كشط الويب.
00:00:05تعمل أداة الكشط اليوم، ثم تتعطل بمجرد تغيير الموقع. فئة تم تغيير اسمها،
00:00:10عنصر div تم نقله، فحص روبوت، والآن أصبحت خط أنابيب البيانات الخاصة بك معطلة. تزعم Scrapling أن
00:00:17أداة الكشط الخاصة بك يمكنها التكيف بدلاً من الانهيار. لديها أكثر من 53 ألف نجمة على GitHub،
00:00:22وهي تدعم التحليل التكيفي، والجلب الخفي، وسير عمل الزحف الأكبر.
00:00:27سأقوم باختبار السؤال الوحيد الذي يهم حقاً.
00:00:30هل يمكنها النجاة من تغيير الموقع دون إعادة كتابة المحددات؟ سنكتشف ذلك الآن.
00:00:40إذن ما هي Scrapling؟ إنها إطار عمل شامل وقابل للتكيف لكشط الويب باستخدام بايثون.
00:00:46تحصل على محلل ذاتي الإصلاح، وجلّابين متخفين، وجلب يعتمد على المتصفح عند الحاجة إلى جافا سكريبت،
00:00:51وإطار عمل للزحف من أجل عمليات زحف أكبر. تثبيت واحد، وواجهة برمجة تطبيقات واحدة. هذا يعني عدداً أقل من أدوات الكشط
00:00:57المعطلة والمزيد من البيانات القابلة للاستخدام التي نستعيدها. الآن، دعونا نرى الجزء الذي يهم فعلاً.
00:01:03إذا كنت تستمتع ببرمجة الأدوات لتسريع سير عملك، فتأكد من الاشتراك. لدينا فيديوهات تصدر طوال الوقت.
00:01:08الآن، هنا لدي إعداد أساسي، أليس كذلك؟ لقد قمت بالفعل بتثبيت Scrapling، لذا سنبقي هذا الجزء سريعاً.
00:01:13استيراد واحد واستدعاء واحد هو كل ما نحتاجه للحصول على الصفحة. في الأعلى هنا، قمت بإنشاء بعض HTML التي تتغير.
00:01:21أحدها يبدو كموقع بداية عام. ثم احتفظت بنفس الشيء، لكنني قمت بتبديل محددات CSS.
00:01:27لنقل أنني أريد اسم المنتج والسعر. الآن، عادةً قد أقوم بالتقاطهما باستخدام محددات CSS،
00:01:34أليس كذلك؟ لذا في صفحة CSS، أضع المحدد الخاص بي، والحفظ التلقائي، صحيح. يمكنني فعل ذلك وسوف
00:01:40يعمل وسنحصل على قاموس من البيانات. يبدو طبيعياً. محددين، وقاموس،
00:01:46وأمضي قدماً. هذا كل شيء. ولكن في نفس الوقت، هذه في الواقع هي المشكلة لأن أداة الكشط العادية تعمل
00:01:52بشكل رائع حتى تتغير تلك الصفحة. الآن، ماذا يحدث إذا تغير الموقع عشوائياً بين عشية وضحاها؟ يقومون بإعادة تصميمه.
00:01:58يفعلون شيئاً لمنع ذلك. لذا يصبح عنوان المنتج “عنوان العنصر” أو يصبح سعر المنتج “قيمة التسعير”.
00:02:04تحتوي الصفحة على نفس البيانات، لكن بنية DOM تتغير بالكامل. يجب أن تكون المحددات القديمة
00:02:11ميتة. وهذا هو المكان الذي ستتعطل فيه معظم أدوات الكشط. ولكن الآن يمكننا تشغيل الوضع التكيفي.
00:02:18تغيير واحد، الحفظ التلقائي يساوي true يصبح التكيف يساوي true. لذا الآن لا يزال بإمكاني وضع عنوان المنتج
00:02:26مع ضبط التكيف على true. نفس البيانات. لم أغير المحددات. إنه هيكل صفحة مختلف بدون
00:02:34إعادة كتابة المحدد. هذه هي الفكرة الرئيسية هنا. الآن، عند كشط عنصر مع ضبط الحفظ التلقائي على true،
00:02:40تقوم Scrapling بتسجيل أدلة حوله. لذا ستقوم بتسجيل أشياء مثل العلامة، والسمات،
00:02:44والآباء والأبناء، وأي نص مجاور، وربما موقع DOM والشكل الهيكلي. لذا عندما يتغير اسم الفئة،
00:02:50يكون لدى Scrapling المزيد من الأدلة المتبقية. هي لا تحتاج إلى أن يظل الموقع بالكامل كما هو.
00:02:56تحتاج فقط إلى إشارة هيكلية كافية للتعرف على العنصر مرة أخرى. وهذا هو
00:03:01الجزء الذي يهم لأن إخفاقات الكشط الحقيقية لا تكون أبداً إعادة تصميم كاملة. بل هي فئة أعيدت تسميتها،
00:03:06غلاف جديد، تخطيط مُرحّل، شيء صغير واحد. هذا بالضبط ما صُمم المطابقة التكيفية لأجله.
00:03:13تحتوي Scrapling على ثلاث قطع كبيرة تهم فعلاً. الأولى هي المحلل التكيفي، وهو ما رأيته للتو.
00:03:18ثم هناك جلّاب متعدد، سير عمل واحد، الأداة المناسبة للمهمة. يذهب الجلّاب لبروتوكول HTTP عادي،
00:03:25سريع لصفحات الويب البسيطة. يمكن للجلّاب المتخفي تجاوز مضادات الروبوتات عند الحاجة. الجلّاب الديناميكي هو متصفح
00:03:32حقيقي للمواقع التي تعتمد بكثافة على JS. واجهة برمجة تطبيقات واحدة، استبدل الجلّاب، واحتفظ بالكود. إطار عمل العنكبوت هو عندما تتحول
00:03:39السكربتات السريعة إلى زاحف حقيقي. الزحف غير المتزامن، الإيقاف المؤقت والاستئناف، تدوير الوكيل، البث، وكل تلك
00:03:46الجلسات المختلطة. الأشياء التي تضيفها عادةً لاحقاً، هي موجودة بالفعل. Scrapling ليست مجرد محلل
00:03:53آخر. إنها تستبدل مكدس الكشط. Requests، BeautifulSoup، Playwright، منطق إعادة المحاولة، مساعدو الوكيل،
00:04:00كود العنكبوت بسير عمل واحد. Scrapling لا تقول أن BeautifulSoup عديم الفائدة ولا تقول أن
00:04:06Playwright أو Scrapy ميتان. BeautifulSoup مع Requests لا يزالان رائعين للصفحات البسيطة. إنه سهل،
00:04:13إنه مقروء والجميع يفهمه، لكنه لا يمنحك أي نوع من التخفي. ولا يمنحك
00:04:20محددات تكيفية ولا يقوم بعرض جافا سكريبت. وبالنسبة لوظائف التحليل الأكبر، يمكن أن يصبح
00:04:26هو عنق الزجاجة الفعلي. الآن، Scrapy قوي. إذا كنت تبني بنية تحتية
00:04:31للزحف الجاد، لا يزال Scrapy يستحق بعض الاحترام، لكن Scrapy غالباً ما يعني إعدادات، خطوط أنابيب، برمجيات وسيطة،
00:04:36إضافات، والمزيد من الإعداد. Playwright و Selenium رائعان عندما تحتاج إلى متصفح حقيقي.
00:04:42أحياناً تحتاج الصفحة فقط إلى جافا سكريبت. لا توجد طريقة للالتفاف على ذلك. لكن المتصفحات ثقيلة. إنها
00:04:48أبطأ من HTTP الخام وتستخدم ذاكرة أكثر. ومرة أخرى، لا تزال لا تحل مشكلة المحددات
00:04:54المعطلة. إنها تشغل الصفحة. لكنها لا تفهم ما الذي قصدت أداة الكشط استخراجه. لذا مع Scrapling،
00:05:01يمكنك استخدام الجلب السريع عندما تستطيع، والتخفي عندما تحتاج إليه، واستخدام عرض المتصفح عندما تتطلب
00:05:06الصفحة ذلك، واستخدام التحليل التكيفي. لذا تغيير صغير واحد في الواجهة لا يفجر كل شيء. الآن، كل هذا
00:05:12لا يعني أن Scrapling ليس لديها مشاكل، أليس كذلك؟ إذا كنت تتعامل مع حماية على مستوى DOM،
00:05:17أو بصمات رقمية متقدمة، أو حدود معدل قوية، فقد تظل بحاجة إلى وكلاء جيدين. لذا يمكن لـ Scrapling
00:05:23المساعدة، لكنها لا تجعلك غير مرئي. يمكن أن يعني الجلب الديناميكي أيضاً إعداد متصفح إضافي. هذه مجرد
00:05:29المقايضة عند إشراك عرض جافا سكريبت. إليك بعض الأفكار لكل هذا.
00:05:34تستحق Scrapling التجربة إذا كنت تقوم بعمل كشط حقيقي، خاصة إذا كنت تبني خطوط أنابيب بيانات،
00:05:41أو لديك وظائف RAG، أو وكلاء ذكاء اصطناعي، أو أي شيء يحتاج إلى الاستمرار في العمل بعد تغيير الموقع المستهدف. أقوى
00:05:47سبب لاستخدامها ليس أنها تجعل الكشط ممكناً. لدينا بالفعل أدوات يمكنها
00:05:53فعل ذلك بالفعل، أليس كذلك؟ السبب الأقوى هو أنها تقلل من الصيانة. الآن، ربما سأتخطاها
00:05:59إذا كان لديك سكربت صغير جداً، أليس كذلك؟ Requests و BeautifulSoup سيؤديان الغرض،
00:06:04أليس كذلك؟ إذا كنت تستمتع ببرمجة أدوات مثل هذه، فتأكد من الاشتراك في قناة BetterStack. نراكم في فيديو آخر.

Key Takeaway

تقلل مكتبة Scrapling من تكاليف صيانة خطوط أنابيب البيانات عبر أداة تحليل تكيفية تتعرف تلقائياً على العناصر بعد تغييرات الموقع، بدلاً من الاعتماد على محددات CSS الثابتة.

Highlights

  • تستخدم أداة Scrapling تقنية المطابقة التكيفية التي تعتمد على سجلات هيكلية مثل العلامات والسمات والعلاقات الأبوية والبيانات المجاورة للتعرف على العناصر حتى بعد تغيير هيكل DOM.

  • تتطلب عملية التحويل إلى الوضع التكيفي تغيير معامل واحد فقط في الكود (auto_save=True) ليتحول إلى adaptive=True.

  • تجمع Scrapling بين مهام مكتبات متعددة مثل Requests وBeautifulSoup وPlaywright في واجهة برمجة تطبيقات واحدة.

  • تدعم الأداة ثلاثة أنواع من الجلب: العادي لبروتوكول HTTP، والمتخفي لتجاوز مضادات الروبوتات، والديناميكي للمواقع التي تعتمد على جافا سكريبت.

  • تساهم الميزات التكيفية في تقليل الحاجة إلى إعادة كتابة المحددات عند إجراء تعديلات طفيفة أو إعادة تصميم في المواقع المستهدفة.

Timeline

مشكلة تعطل أدوات الكشط التقليدية

  • تتسبب التغييرات الطفيفة في المواقع مثل إعادة تسمية الفئات أو نقل العناصر في توقف خطوط أنابيب البيانات.
  • توفر Scrapling إطار عمل شامل لكشط الويب يعالج الحاجة إلى الصيانة المتكررة للمحددات.

تتعطل معظم أدوات كشط الويب التقليدية بمجرد حدوث تغيير في هيكلية الموقع المستهدف، سواء كان ذلك تغييراً في أسماء الفئات أو نقل عناصر div. تقدم Scrapling حلاً من خلال إطار عمل يعتمد على بايثون، ويهدف إلى تمكين أدوات الكشط من التكيف ذاتياً بدلاً من التوقف عن العمل، مما يزيد من كمية البيانات القابلة للاستخدام.

آلية العمل التكيفي

  • يسمح ضبط المعامل adaptive=True للأداة بالتعرف على البيانات حتى عند تغير هيكل DOM.
  • تخزن الأداة أدلة هيكلية حول العنصر تشمل العلامات، السمات، النصوص المجاورة، والموقع الهيكلي لضمان التعرف المستمر.

تعتمد الأداة على تسجيل أدلة متنوعة حول العنصر المستهدف بدلاً من الاعتماد على محدد CSS واحد فقط. عندما تتغير بنية الصفحة، تستخدم Scrapling هذه البيانات المخزنة للبحث عن العنصر مرة أخرى، مما يجعل الكود قادراً على النجاة من التغييرات الطفيفة التي تحدث غالباً في إعادة تصميم المواقع.

دمج أدوات الكشط في سير عمل واحد

  • تدمج Scrapling وظائف Requests وBeautifulSoup وPlaywright في واجهة برمجة تطبيقات واحدة.
  • توفر الأداة ثلاثة مستويات من الجلب: العادي، المتخفي، والديناميكي الذي يدعم جافا سكريبت.

تستبدل الأداة مكدس الكشط التقليدي المكون من أدوات متعددة بسير عمل موحد. يمكن للمستخدم التبديل بين الجلب السريع لصفحات HTTP البسيطة، والجلب المتخفي لتجاوز مضادات الروبوتات، والجلب الديناميكي عبر المتصفح للمواقع المعقدة، كل ذلك مع الاحتفاظ بنفس واجهة البرمجة.

القيود ومجالات الاستخدام الموصى بها

  • تظل الأداة بحاجة إلى وكلاء (Proxies) متقدمين عند التعامل مع حدود معدل الطلبات الصارمة أو الحماية المتقدمة.
  • تعتبر Scrapling خياراً مثالياً لبناء خطوط أنابيب البيانات، وكلاء الذكاء الاصطناعي، ووظائف RAG التي تتطلب استقراراً طويل الأمد.

رغم قدراتها التكيفية، لا تجعل الأداة عملية الكشط غير مرئية تماماً في مواجهة بصمات رقمية معقدة. يفضل استخدامها في المشاريع التي تتطلب استمرارية عالية مثل خطوط أنابيب البيانات أو وكلاء الذكاء الاصطناعي، بينما تظل السكربتات البسيطة جداً مناسبة للطرق التقليدية مثل Requests وBeautifulSoup.

Community Posts

No posts yet. Be the first to write about this video!

Write about this video