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. نراكم في فيديو آخر.
Community Posts
No posts yet. Be the first to write about this video!
Write about this video