هناك العديد من مكتبات وأطر Python لاستخراج البيانات من الويب. يبدأ الجميع بأداة معينة حتى يدركوا أنها قد لا تكون الأنسب لمشروعهم التالي. على الرغم من أنه من غير المرجح أن تستخدم جميع أدوات Python في مشروع واحد ، يجب أن تعرف الأدوات التي يجب أن تظل في متناول يديك في مربع أدوات تجريف الويب الخاص بك.
فيما يلي أفضل مكتبات Python وأطر العمل والأدوات الأخرى التي ستساعدك في استخراج البيانات من الويب دون عناء.
1. شوربة جميلة
ابدأ القائمة بأفضل مكتبة كشط ويب للمبتدئين: حساء جميل. إنها في الأساس أداة تستخرج البيانات من ملفات HTML و XML التي تم تحليلها عن طريق تحويل المستند إلى كائن Python.
يكمن "جمال" الشوربة الجميلة في بساطتها. من السهل الإعداد ويمكنك ذلك ابدأ بمشروعك الأول لإلغاء بيانات الويب في غضون دقائق. يستخدم Beautiful Soup أسلوبًا هرميًا لاستخراج البيانات من مستند HTML. يمكنك استخراج العناصر باستخدام العلامات والفئات والمعرفات والأسماء وسمات HTML الأخرى.
ومع ذلك ، فإن توقع المزيد من Beautiful Soup سيكون بعيدًا جدًا. لا يوجد دعم مدمج للأدوات الوسيطة والوظائف المتقدمة الأخرى مثل تدوير الوكيل أو خيوط المعالجة المتعددة. مع Beautiful Soup ، أنت بحاجة إلى مكتبات لإرسال طلبات HTTP ، وتحليل المستند الذي تم تنزيله ، وتصدير المعلومات المسردة إلى ملف الإخراج.
2. الطلبات
الطلبات هي بلا شك مكتبة Python الأكثر استخدامًا للتعامل مع طلبات HTTP. تتحمل الأداة شعارها: HTTP for Humans ™. وهو يدعم أنواع طلبات HTTP المتعددة ، بدءًا من GET و POST إلى التصحيح والحذف. ليس هذا فقط ، يمكنك التحكم في كل جانب من جوانب الطلب تقريبًا ، بما في ذلك الرؤوس والردود.
إذا كان هذا يبدو سهلاً ، فكن مطمئنًا لأن الطلبات تلبي أيضًا المستخدمين المتقدمين بميزاتها المتعددة. يمكنك التلاعب بطلب ما وتخصيص رؤوسه ، وتحميل ملف إلى خادم باستخدام POST ، والتعامل مع المهلات وعمليات إعادة التوجيه والجلسات ، من بين أشياء أخرى.
عادةً ما ترتبط الطلبات بـ Beautiful Soup عندما يتعلق الأمر بكشط الويب حيث أن أطر عمل Python الأخرى لديها دعم مدمج للتعامل مع طلبات HTTP. للحصول على HTML لصفحة ويب ، يمكنك استخدام الطلبات لإرسال طلب GET إلى الخادم ، ثم استخراج البيانات النصية من الاستجابة ونقلها إلى Beautiful Soup.
3. سكرابى
كما يوحي الاسم ، فإن Scrapy هو إطار عمل Python لتطوير كاشطات الويب على نطاق واسع. إنها أداة الجيش السويسري لاستخراج البيانات من الويب. يتعامل Scrapy مع كل شيء بدءًا من إرسال الطلبات وتنفيذ الوكلاء إلى استخراج البيانات وتصديرها.
على عكس الشوربة الجميلة ، فإن القوة الحقيقية لسكرابي هي آليتها المتطورة. لكن لا تدع هذا التعقيد يخيفك. Scrapy هو إطار عمل تجريف الويب الأكثر كفاءة في هذه القائمة ، من حيث السرعة والكفاءة والميزات. يأتي مع محددات تتيح لك تحديد البيانات من مستند HTML باستخدام عناصر XPath أو CSS.
ميزة إضافية هي السرعة التي يرسل بها Scrapy الطلبات ويستخرج البيانات. يرسل الطلبات ويعالجها بشكل غير متزامن ، وهذا ما يميزه عن أدوات تجريف الويب الأخرى.
بصرف النظر عن الميزات الأساسية ، يمكنك أيضًا الحصول على دعم للأدوات الوسيطة ، وهي إطار عمل من الخطافات التي تضخ وظائف إضافية إلى آلية Scrapy الافتراضية. لا يمكنك كشط مواقع الويب التي تعتمد على JavaScript باستخدام Scrapy خارج الصندوق ، ولكن يمكنك استخدام البرامج الوسيطة مثل scrapy-selenium و scrapy-splash و scrapy-scrapingbee لتنفيذ هذه الوظيفة في مشروعك.
أخيرًا ، عندما تنتهي من استخراج البيانات ، يمكنك تصديرها بتنسيقات ملفات مختلفة ؛ CSV و JSON و XML ، على سبيل المثال لا الحصر.
يعد Scrapy أحد الأسباب العديدة التي تجعل Python هي أفضل لغة برمجة لأي شخص في تجريف الويب. إنشاء مشروع Scrapy الأول الخاص بك يمكن أن يستغرق بعض الوقت ، خاصة إذا لم تكن لديك خبرة في صفوف وأطر بايثون. يتم فصل سير عمل Scrapy إلى ملفات متعددة وبالنسبة للمبتدئين ، قد يعتبر ذلك تعقيدًا غير مرغوب فيه.
4. السيلينيوم
إذا كنت تبحث عن محتوى ديناميكي يتم عرضه بجافا سكريبت ، فإن السيلينيوم هو ما تحتاجه. كإطار عمل لاختبار الويب عبر الأنظمة الأساسية ، يساعدك Selenium في عرض HTML و CSS و JavaScript واستخراج ما هو مطلوب. يمكنك أيضًا محاكاة تفاعلات المستخدم الحقيقية عن طريق تشفير إجراءات لوحة المفاتيح والماوس ، وهو ما يعد تغييرًا كاملاً في اللعبة.
يولد السيلينيوم مثيل متصفح باستخدام برنامج تشغيل الويب ويقوم بتحميل الصفحة. بعض المتصفحات الشائعة التي يدعمها Selenium هي Google Chrome و Mozilla Firefox و Opera و Microsoft Edge و Apple Safari و Internet Explorer. وهي تستخدم محددات مواقع CSS و XPath ، على غرار محددات Scrapy ، للعثور على المحتوى واستخراجه من عناصر HTML على الصفحة.
إذا لم تكن خبيرًا في Python ولكنك تعرف لغات برمجة أخرى ، فيمكنك استخدام Selenium مع C # و JavaScript و PHP و Perl و Ruby و Java.
القيد الوحيد هو أن السيلينيوم يطلق متصفح ويب في الخلفية ، تزداد الموارد المطلوبة لتنفيذ الكاشطة بشكل كبير ، بالمقارنة مع حساء سكرابى أو جميل. ولكن بالنظر إلى الميزات الإضافية التي يجلبها السيلينيوم إلى الطاولة ، فهذا مبرر تمامًا.
5. أورليب
مكتبة Python urllib هي أداة بسيطة لكنها ضرورية في ترسانة تجريف الويب الخاصة بك. يتيح لك التعامل مع عناوين URL ومعالجتها في نصوص Python النصية الخاصة بك.
يعد تعديل عنوان URL أحد التطبيقات العملية المناسبة لـ urllib. ضع في اعتبارك أنك تقوم بإلغاء موقع ويب من صفحات متعددة وتحتاج إلى تعديل جزء من عنوان URL للوصول إلى الصفحة التالية.
يمكن أن يساعدك urllib في تحليل عنوان URL وتقسيمه إلى أجزاء متعددة ، والتي يمكنك بعد ذلك تعديلها وإلغاء تحليلها لإنشاء عنوان URL جديد. في حين أن استخدام مكتبة لتحليل السلاسل قد يبدو وكأنه مبالغة ، فإن urllib هو المنقذ للأشخاص الذين يقومون بتشفير برامج كاشطات الويب من أجل المتعة ولا يرغبون في الدخول في التفاصيل الجوهرية لهياكل البيانات.
أيضًا ، إذا كنت ترغب في فحص ملف robots.txt الخاص بموقع الويب ، وهو ملف نصي يحتوي على قواعد وصول لبرنامج الزاحف من Google وأدوات الكشط الأخرى ، يمكن أن يساعدك urllib في ذلك أيضًا. يوصى باتباع ملف robots.txt الخاص بموقع الويب وكشط الصفحات المسموح بها فقط.
6. مكتبات JSON و CSV و XML
نظرًا لأن Beautiful Soup أو Selenium لا تحتويان على ميزات مضمنة لتصدير البيانات ، فستحتاج إلى مكتبة Python إليها تصدير البيانات إلى JSONأو CSV أو XML. لحسن الحظ ، هناك عدد كبير من المكتبات التي يمكنك القيام بها لتحقيق ذلك ، ويوصى بالمكتبات الأساسية ، وهي json و csv و xml لملفات JSON و CSV و XML على التوالي.
تتيح لك هذه المكتبات إنشاء ملف وإضافة بيانات إليه ، ثم تصدير الملف أخيرًا إلى وحدة التخزين المحلية أو الخادم البعيد.
7. شوربة ميكانيكية
شوربة ميكانيكية؟ هل هذا قطع شوربة جميلة رخيصة؟ رقم مستوحى من مكننة واستنادًا إلى طلبات Python و Beautiful Soup ، تساعدك MechanicalSoup على أتمتة السلوك البشري واستخراج البيانات من صفحة الويب. يمكنك اعتباره في منتصف الطريق بين حساء جميل والسيلينيوم. المصيد الوحيد؟ لا يتعامل مع JavaScript.
في حين أن الأسماء متشابهة ، فإن بناء جملة MechanicalSoup وسير العمل مختلفان للغاية. تقوم بإنشاء جلسة متصفح باستخدام MechanicalSoup وعندما يتم تنزيل الصفحة ، يمكنك استخدام أساليب Beautiful Soup مثل يجد() و جد كل() لاستخراج البيانات من مستند HTML.
ميزة أخرى مثيرة للإعجاب في MechanicalSoup هي أنه يتيح لك ملء النماذج باستخدام برنامج نصي. هذا مفيد بشكل خاص عندما تحتاج إلى إدخال شيء ما في حقل (شريط بحث ، على سبيل المثال) للوصول إلى الصفحة التي تريد كشطها. يعتبر التعامل مع الطلبات في MechanicalSoup أمرًا رائعًا حيث يمكنه التعامل تلقائيًا مع عمليات إعادة التوجيه واتباع الروابط الموجودة على الصفحة ، مما يوفر لك الجهد المبذول في ترميز قسم يدويًا للقيام بذلك.
نظرًا لأنه يعتمد على حساء جميل ، فهناك تداخل كبير في عيوب هاتين المكتبتين. على سبيل المثال ، لا توجد طريقة مضمنة للتعامل مع إخراج البيانات وتدوير الوكيل وعرض JavaScript. مشكلة الحساء الجميلة الوحيدة التي عالجتها MechanicalSoup هي دعم التعامل مع الطلبات ، والتي تم حلها عن طريق ترميز غلاف لمكتبة طلبات Python.
جعل تجريف الويب في Python أسهل
Python هي لغة برمجة قوية لإلغاء الويب ، بلا شك ، لكن الأدوات المستخدمة ليست سوى جزء من المشكلة. إن أبرز مشكلة يواجهها الأشخاص عند ترميز مكشطة هي تعلم التسلسل الهرمي لمستند HTML.
يعد فهم بنية صفحة الويب ومعرفة كيفية تحديد موقع العنصر بسرعة أمرًا ضروريًا إذا كنت ترغب في تطوير برامج كاشطات ويب متقدمة.