هل تريد تعلم تجريف الويب باستخدام Python ولكنك محتار بشأن استخدام Beautiful Soup أو Selenium أو Scrapy لمشروعك التالي؟ في حين أن جميع مكتبات وأطر Python هذه قوية في حد ذاتها ، إلا أنها لا تلبي احتياجاتها جميع احتياجات تجريف الويب ، وبالتالي ، من المهم معرفة الأداة التي يجب عليك استخدامها في ملف وظيفة.
دعنا نلقي نظرة على الاختلافات بين Beautiful Soup و Scrapy و Selenium ، حتى تتمكن من اتخاذ قرار حكيم قبل البدء في مشروع كشط ويب Python التالي.
1. سهولة الاستعمال
إذا كنت مبتدئًا ، فسيكون متطلبك الأول مكتبة يسهل تعلمها واستخدامها. يقدم لك Beautiful Soup جميع الأدوات البدائية التي تحتاجها لتتخلص من الويب ، وخاصةً مفيد للأشخاص الذين لديهم الحد الأدنى من الخبرة مع Python ولكنهم يريدون البدء في العمل مع الويب تجريف.
التحذير الوحيد ، نظرًا لبساطته ، فإن Beautiful Soup ليست قوية مقارنةً بـ Scrapy أو Selenium. يمكن للمبرمجين ذوي الخبرة في التطوير إتقان كل من Scrapy و Selenium بسهولة ، ولكن بالنسبة للمبتدئين ، فإن قد يستغرق إنشاء المشروع الأول الكثير من الوقت إذا اختاروا العمل مع هذه الأطر بدلاً من جميلة حساء.
لكشط محتوى علامة العنوان على example.com باستخدام حساء جميل ، يمكنك استخدام الكود التالي:
url = "https://example.com/"
res = request.get (url) .text
حساء = شوربة جميلة (الدقة ، 'html.parser')
العنوان = soup.find ("عنوان").نص
مطبعة(عنوان)
لتحقيق نتائج مماثلة باستخدام السيلينيوم ، يجب أن تكتب:
url = "https://example.com"
سائق = webdriver. كروم("المسار / إلى / chromedriver")
سائق.يحصل(عنوان url)
title = driver.find_element (بواسطة. TAG_NAME ، "عنوان") .get_attribute ('نص')
مطبعة(عنوان)
يتكون هيكل ملف مشروع Scrapy من ملفات متعددة ، مما يزيد من تعقيده. الكود التالي يلغي العنوان من example.com:
يستورد خردةفصلالعنوان العنكبوت(خردة. العنكبوت):
الاسم = 'عنوان'
start_urls = ['https://example.com']
defتحليل(النفس ، الرد):
أَثْمَر {
'اسم': response.css ('عنوان'),
}
إذا كنت ترغب في استخراج البيانات من خدمة تقدم واجهة برمجة تطبيقات رسمية ، فقد يكون قرارًا حكيمًا استخدام واجهة برمجة التطبيقات بدلاً من تطوير مكشطة الويب.
2. سرعة القشط والتوازي
من بين الثلاثة ، يعتبر Scrapy الفائز الواضح عندما يتعلق الأمر بالسرعة. هذا لأنه يدعم الموازاة بشكل افتراضي. باستخدام Scrapy ، يمكنك إرسال طلبات HTTP متعددة في وقت واحد ، وعندما يقوم البرنامج النصي بتنزيل رمز HTML للمجموعة الأولى من الطلبات ، يكون جاهزًا لإرسال دفعة أخرى.
باستخدام Beautiful Soup ، يمكنك استخدام مكتبة الترابط لإرسال طلبات HTTP متزامنة ، لكنها ليست مريحة وسيتعين عليك تعلم تعدد مؤشرات الترابط للقيام بذلك. على السيلينيوم ، من المستحيل تحقيق التوازي دون تشغيل مثيلات متصفح متعددة.
إذا كنت ستصنف أدوات تجريف الويب الثلاثة هذه من حيث السرعة ، فإن Scrapy هو الأسرع ، يليه Beautiful Soup و Selenium.
3. استخدام الذاكرة
السيلينيوم هي واجهة برمجة تطبيقات لأتمتة المتصفح ، والتي وجدت تطبيقاتها في مجال تجريف الويب. عندما تستخدم السيلينيوم لكشط موقع ويب ، فإنه ينتج عنه مثيل متصفح بدون رأس يعمل في الخلفية. هذا يجعل السيلينيوم أداة كثيفة الاستخدام للموارد عند مقارنتها بالحساء الجميل والسكراب.
نظرًا لأن الأخير يعمل بالكامل في سطر الأوامر ، فإنهم يستخدمون موارد نظام أقل ويقدمون أداءً أفضل من السيلينيوم.
4. متطلبات التبعية
Beautiful Soup عبارة عن مجموعة من أدوات التحليل التي تساعدك على استخراج البيانات من ملفات HTML و XML. إنه يشحن مع أي شيء آخر. عليك استخدام مكتبات مثل الطلبات أو أورليب لإنشاء طلبات HTTP ، ومحللات مضمنة لتحليل HTML / XML ، ومكتبات إضافية لتنفيذ الوكلاء أو دعم قاعدة البيانات.
من ناحية أخرى ، يأتي Scrapy مع shebang كله. تحصل على أدوات لإرسال الطلبات ، وتحليل الكود الذي تم تنزيله ، وإجراء العمليات على البيانات المستخرجة ، وتخزين المعلومات التي تم كشطها. يمكنك إضافة وظائف أخرى إلى Scrapy باستخدام الامتدادات والبرمجيات الوسيطة ، ولكن هذا سيأتي لاحقًا.
باستخدام السيلينيوم ، يمكنك تنزيل برنامج تشغيل ويب للمتصفح الذي تريد تشغيله تلقائيًا. لتنفيذ ميزات أخرى مثل تخزين البيانات ودعم الوكيل ، ستحتاج إلى وحدات تابعة لجهات خارجية.
5. جودة التوثيق
بشكل عام ، كل وثائق المشروع منظمة بشكل جيد وتصف كل طريقة باستخدام الأمثلة. لكن فعالية توثيق المشروع تعتمد بشكل كبير على القارئ أيضًا.
يعد توثيق Beautiful Soup أفضل بكثير للمبتدئين الذين يبدأون في تجريف الويب. يحتوي السيلينيوم و Scrapy على وثائق مفصلة ، بلا شك ، لكن المصطلحات الفنية يمكن أن تصطاد العديد من الوافدين الجدد على حين غرة.
إذا كنت من ذوي الخبرة بمفاهيم ومصطلحات البرمجة ، فسيكون من السهل قراءة أي من الوثائق الثلاثة.
6. دعم الامتدادات والبرمجيات الوسيطة
Scrapy هو إطار عمل Python الأكثر قابلية للتوسعة على الويب. وهو يدعم البرامج الوسيطة والإضافات والوكلاء والمزيد ، ويساعدك على تطوير برنامج تتبع الارتباطات للمشاريع واسعة النطاق.
يمكنك كتابة برامج زحف مضمونة وفعالة من خلال تنفيذ البرامج الوسيطة في Scrapy ، وهي عبارة عن خطافات تضيف وظائف مخصصة إلى الآلية الافتراضية لإطار العمل. على سبيل المثال ، يعتني HttpErrorMiddleware بأخطاء HTTP حتى لا تضطر العناكب للتعامل معها أثناء معالجة الطلبات.
البرامج الوسيطة والإضافات حصرية لـ Scrapy ولكن يمكنك تحقيق نتائج مماثلة مع Beautiful Soup و Selenium باستخدام مكتبات Python الإضافية.
7. عرض جافا سكريبت
يحتوي السيلينيوم على حالة استخدام واحدة حيث يتفوق على مكتبات تجريف الويب الأخرى ، وهو إلغاء مواقع الويب التي تدعم JavaScript. على الرغم من أنه يمكنك كشط عناصر JavaScript باستخدام البرامج الوسيطة Scrapy ، فإن سير عمل السيلينيوم هو الأسهل والأكثر ملاءمة على الإطلاق.
أنت تستخدم متصفحًا لتحميل موقع ويب ، والتفاعل معه باستخدام النقرات والضغط على الأزرار ، ومتى لديك المحتوى الذي تريد كشطه على الشاشة ، واستخراجه باستخدام Selenium's CSS و XPath المحددات.
يمكن لـ Beautiful Soup تحديد عناصر HTML باستخدام محددات XPath أو CSS. ومع ذلك ، فإنه لا يوفر وظائف لكشط العناصر المعروضة في JavaScript على صفحة الويب.
أصبح تجريف الويب سهلاً باستخدام Python
الإنترنت مليء بالبيانات الخام. يساعد تجريف الويب في تحويل هذه البيانات إلى معلومات مفيدة يمكن استخدامها بشكل جيد. من المحتمل أن يكون السيلينيوم هو الرهان الأكثر أمانًا إذا كنت تريد كشط موقع ويب باستخدام JavaScript أو تحتاج إلى تشغيل بعض العناصر التي تظهر على الشاشة قبل استخراج البيانات.
Scrapy هو إطار عمل كامل لتجميع بيانات الويب لجميع احتياجاتك ، سواء كنت تريد كتابة زاحف صغير أو مكشطة كبيرة الحجم تزحف بشكل متكرر إلى الإنترنت للحصول على بيانات محدثة.
يمكنك استخدام حساء جميل إذا كنت مبتدئًا أو تحتاج إلى تطوير مكشطة بسرعة. مهما كان إطار العمل أو المكتبة التي تستخدمها ، فمن السهل البدء في تعلم تجريف الويب باستخدام Python.