الإعلانات

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

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

تثبيت خردة

Scrapy هي مكتبة Python التي تم إنشاؤها لكشط الويب وبناء برامج زحف الويب. إنه سريع وبسيط ويمكنه التنقل عبر صفحات الويب المتعددة دون بذل الكثير من الجهد.

تتوفر خدمة Scrapy من خلال مكتبة Pip Downloads Python (PIP) ، إليك معلومات تنشيطية كيفية تثبيت PIP على Windows و Mac و Linux كيفية تثبيت Python PIP على أنظمة تشغيل Windows و Mac و Linuxيعتمد العديد من مطوري Python على أداة تسمى PIP لـ Python لتبسيط عملية التطوير. إليك كيفية تثبيت Python PIP. اقرأ أكثر .

باستخدام بيئة بيثون الافتراضية يُفضل لأنه سيسمح لك بتثبيت Scrapy في دليل ظاهري يترك ملفات النظام الخاصة بك بمفردها. تنصح وثائق Scrapy بالقيام بذلك للحصول على أفضل النتائج.

instagram viewer

إنشاء دليل وتهيئة بيئة افتراضية.

مكدير الزاحف. مؤتمر نزع السلاح الزاحف. virtualenv venv.. venv / بن / تفعيل. 

يمكنك الآن تثبيت Scrapy في هذا الدليل باستخدام أمر PIP.

نقطة تثبيت scrapy. 

فحص سريع للتأكد من تثبيت Scrapy بشكل صحيح

scrapy. # المطبوعات. Scrapy 1.4.0 - لا يوجد مشروع نشط الاستعمال: scrapy  [خيارات] [وسيطات] الأوامر المتوفرة: bench قم بإجراء اختبار قياس سريع وجلب جلب عنوان URL باستخدام برنامج تنزيل Scrapy genspider إنشاء عنكبوت جديد باستخدام قوالب محددة مسبقا runspider - تشغيل عنكبوت قائم بذاته (بدون إنشاء مشروع)... 

كيفية بناء الزاحف على شبكة الإنترنت

الآن بعد أن أصبحت البيئة جاهزة ، يمكنك البدء في إنشاء زاحف الويب. دعونا نتخلص من بعض المعلومات من صفحة ويكيبيديا على البطاريات: https://en.wikipedia.org/wiki/Battery_(electricity).

الخطوة الأولى لكتابة متتبع ارتباطات هي تحديد فئة بيثون تمتد من Scrapy. عنكبوت. يمنحك هذا الوصول إلى جميع الوظائف والميزات في Scrapy. دعنا نسمي هذه الفئة spider1.

يحتاج فصل العنكبوت إلى بعض المعلومات:

  • أ اسم لتحديد العنكبوت
  • أ start_urls متغير يحتوي على قائمة عناوين URL التي سيتم الزحف إليها (سيكون عنوان URL ويكيبيديا هو المثال في هذا البرنامج التعليمي)
  • أ تحليل () الطريقة التي يتم استخدامها لمعالجة صفحة الويب لاستخراج المعلومات
استيراد scrapy فئة spider1 (scrapy. العنكبوت): name = 'Wikipedia' start_urls = [' https://en.wikipedia.org/wiki/Battery_(electricity)'] تحليل ديف (النفس ، استجابة): تمرير. 

اختبار سريع للتأكد من أن كل شيء يعمل بشكل صحيح.

رهيبة spspy spider1.py. # المطبوعات. 2017-11-23 09:09:21 [scrapy.utils.log] INFO: بدأ تطبيق Scrapy 1.4.0 (bot: scrapybot) 2017-11-23 09:09:21 [scrapy.utils.log] INFO: إعدادات تجاوز: {'SPIDER_LOADER_WARN_ONLY': True} 2017-11-23 09:09:21 [scrapy.middleware] INFO: التمديدات الممكنة: ['scrapy.extensions.memusage. MemoryUsage '،' scrapy.extensions.logstats. LogStats، ...

إيقاف تشغيل التسجيل

يؤدي تشغيل Scrapy مع هذه الفئة إلى طباعة معلومات السجل التي لن تساعدك في الوقت الحالي. لنجعل الأمر بسيطًا عن طريق إزالة معلومات السجل الزائدة هذه. إستخدم تحذير بيان عن طريق إضافة رمز إلى بداية الملف.

استيراد التسجيل. logging.getLogger ('scrapy'). setLevel (تسجيل. تحذير)

الآن عند تشغيل البرنامج النصي مرة أخرى ، لن تتم طباعة معلومات السجل.

باستخدام Chrome Inspector

يتم تخزين كل شيء على صفحة ويب في عناصر HTML. يتم ترتيب العناصر في نموذج كائن المستند (DOM). فهم DOM أمر بالغ الأهمية جافا سكريبت وتطوير الويب: استخدام نموذج كائن المستندستعرض هذه المقالة على الهيكل العظمي للمستند الذي يعمل معه JavaScript. امتلاك معرفة عملية بنموذج كائن المستند الملخص ، يمكنك كتابة JavaScript الذي يعمل على أي صفحة ويب. اقرأ أكثر للحصول على أقصى استفادة من برنامج زاحف الويب الخاص بك. يبحث متتبع ارتباطات الويب من خلال كل عناصر HTML الموجودة في الصفحة للعثور على المعلومات ، لذا فإن معرفة كيفية ترتيبها أمر مهم.

يحتوي Google Chrome على أدوات تساعدك في العثور على عناصر HTML بشكل أسرع. يمكنك تحديد موقع HTML لأي عنصر تراه على صفحة الويب باستخدام المفتش.

  • انتقل إلى صفحة في Chrome
  • ضع الماوس على العنصر الذي ترغب في عرضه
  • انقر بزر الماوس الأيمن واختر فحص من القائمة

هذه الخطوات سوف تفتح وحدة تحكم المطور مع عناصر علامة التبويب المحددة. في الجزء السفلي من وحدة التحكم ، سترى شجرة من العناصر. هذه الشجرة هي كيف ستحصل على معلومات للبرنامج النصي الخاص بك.

استخراج العنوان

دعونا نحصل على البرنامج النصي للقيام ببعض الأعمال من أجلنا ؛ زحف بسيط للحصول على نص عنوان صفحة الويب.

بدء البرنامج النصي عن طريق إضافة بعض الرموز إلى تحليل () الطريقة التي تستخرج العنوان.

... def defse (self، response): print response.css ('h1 # firstHeading:: text'). extract ()... 

ال استجابة تدعم الوسيطة طريقة تسمى CSS () الذي يحدد عناصر من الصفحة باستخدام الموقع الذي تقدمه.

في هذا المثال ، العنصر هو h1.firstHeading. مضيفا ::نص إلى البرنامج النصي هو ما يمنحك محتوى النص للعنصر. وأخيرا، فإن استخراج() طريقة إرجاع العنصر المحدد.

يؤدي تشغيل هذا البرنامج النصي في Scrapy إلى طباعة العنوان في نموذج نصي.

[البطارية (الكهرباء) "]

العثور على الوصف

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

إليك شجرة العناصر في وحدة تحكم مطوري Chrome:

شعبة # ميغاواط-محتوى النص> div> ع

يشير السهم الأيمن (>) إلى وجود علاقة بين الوالدين والطفل بين العناصر.

هذا الموقع سيعود كل من ص العناصر المتطابقة ، والتي تتضمن الوصف بالكامل. للحصول على الأول ص عنصر يمكنك كتابة هذا الكود:

response.css ( 'شعبة # ميغاواط محتوى النص> div> ع') [0]

تماما مثل العنوان ، يمكنك إضافة مستخرج CSS ::نص للحصول على محتوى النص للعنصر.

response.css ( 'شعبة # ميغاواط محتوى النص> div> ع') [0]. المغلق ( ':: النص')

يستخدم التعبير النهائي استخراج() لإرجاع القائمة. يمكنك استخدام بايثون انضم() وظيفة للانضمام إلى القائمة بمجرد اكتمال جميع الزحف.

 def parse (self، response): print '' .join (response.css ('div # mw-content-text> div> p') [0] .css (':: text'). extract ())

والنتيجة هي الفقرة الأولى من النص!

البطارية الكهربائية عبارة عن جهاز يتكون من خلية كهروكيميائية واحدة أو أكثر مع توصيلات خارجية لتزويد الطاقة الكهربائية أجهزة مثل المصابيح الكهربائية والهواتف الذكية والسيارات الكهربائية. [1] عندما تقوم البطارية بتزويد الطاقة الكهربائية ، يكون الجهاز موجبًا يكون... 

جمع بيانات JSON

يمكن لـ Scrapy استخراج المعلومات في نموذج نصي ، وهو أمر مفيد. يتيح لك Scrapy أيضًا عرض البيانات JavaScript Object Notation (JSON). JSON هي وسيلة رائعة لتنظيم المعلومات وتستخدم على نطاق واسع في تطوير الشبكة. JSON يعمل بشكل جيد مع بيثون JSON Python Parsing: دليل بسيطهناك مكتبات وأدوات متاحة للتحليل وتوليد JSON من أي لغة وبيئة تقريبًا. تركز هذه المقالة على الأساليب والقضايا الناشئة عن تحليل JSON python. اقرأ أكثر كذلك.

عندما تحتاج إلى جمع البيانات باسم JSON ، يمكنك استخدام يخضع أو يستسلم بيان في صلب Scrapy.

إليك نسخة جديدة من البرنامج النصي تستخدم عبارة عائد. بدلاً من الحصول على أول عنصر p في تنسيق النص ، سيؤدي هذا إلى انتزاع جميع عناصر p وتنظيمه بتنسيق JSON.

... def parse (self، response): for e in response.css ('div # mw-content-text> div> p'): yield {'para': '' .join (e.css (':: text' ) .extract ()). قطاع ()}... 

يمكنك الآن تشغيل العنكبوت عن طريق تحديد ملف JSON للمخرجات:

scrapy runspider spider3.py -o joe.json. 

سيقوم البرنامج النصي الآن بطباعة جميع عناصر p.

[ {"الفقرة": "البطارية الكهربائية عبارة عن جهاز يتكون من خلية كهروكيميائية واحدة أو أكثر مع توصيلات خارجية مزودة بالأجهزة الكهربائية مثل الكشافات والهواتف الذكية والسيارات الكهربائية. [1] عندما تقوم البطارية بتزويد الطاقة الكهربائية ، فإن الطرف الموجب هو الكاثود ويكون الطرف السالب هو الأنود. [2] تعتبر المحطة الطرفية التي تحمل علامة سالبة مصدر الإلكترونات التي عند تدفقها إلى دائرة خارجية سوف تتدفق وتوفر الطاقة لجهاز خارجي. عندما تكون البطارية متصلة بدائرة خارجية ، فإن الشوارد تكون قادرة على التحرك كأيونات داخل ، مما يسمح التفاعلات الكيميائية التي يتعين استكمالها في المحطات المنفصلة ، وبالتالي توصيل الطاقة إلى الخارج دائرة كهربائية. إن حركة تلك الأيونات داخل البطارية هي التي تسمح للتيار بالخروج من البطارية لأداء العمل. [3] تاريخيا ، يشير المصطلح \ "البطارية \" إلى جهاز مكون بشكل خاص من خلايا متعددة ، ومع ذلك تطورت الاستخدام بالإضافة إلى ذلك لتشمل الأجهزة التي تتكون من خلية واحدة. [4] "}، {" para ":" تُستخدم البطاريات الأساسية (ذات الاستخدام الواحد أو \ "المتاح \") مرة واحدة و التخلص منها. يتم تغيير المواد قطب لا رجعة فيه أثناء التفريغ. الأمثلة الشائعة هي البطارية القلوية المستخدمة في المصابيح الكهربائية والعديد من الأجهزة الإلكترونية المحمولة. البطاريات الثانوية (القابلة لإعادة الشحن) يمكن تفريغها وإعادة شحنها متعددة ...

تجريف عناصر متعددة

حتى الآن ، قام متتبع ارتباطات الويب بإلغاء العنوان ونوع عنصر من الصفحة. يمكن لـ Scrapy أيضًا استخراج المعلومات من أنواع مختلفة من العناصر في برنامج نصي واحد.

دعنا نستخلص أفضل إصدارات IMDb Box Office لقضاء عطلة نهاية الأسبوع. يتم سحب هذه المعلومات من http://www.imdb.com/chart/boxoffice، في جدول مع الصفوف لكل متري.

ال تحليل () يمكن للطريقة استخراج أكثر من حقل من الصف. باستخدام أدوات مطوّري برامج Chrome ، يمكنك العثور على العناصر المتداخلة داخل الجدول.

... def parse (self، response): e in response.css ('div # boxoffice> table> tbody> tr'): العائد {'title': '' .join (e.css ('td.titleColumn> a:: text '). extract ()). strip ()،' weekend ':' .join (e.css ('td.ratingColumn') [0] .css (':: text'). extract ()). قطاع () ، 'الإجمالي': '' (e.css ('td.ratingColumn') [1] .css ('span.secondaryInfo:: text'). extract ()). strip ()، 'weeks': '' .join (e.css (' td.weeksColumn:: text '). extract ()). strip () ،' image ': e.css ('td.posterColumn img:: attr (src)'). extract_first ()،}... 

ال صورة محدد يحدد ذلك IMG هو سليل td.posterColumn. لاستخراج السمة الصحيحة ، استخدم التعبير :: attr (src).

يؤدي تشغيل العنكبوت إلى إرجاع JSON:

[ {"الإجمالي": "93.8 مليون دولار" ، "الأسابيع": "1" ، "عطلة نهاية الأسبوع": "93.8 مليون دولار" ، "الصورة": " https://images-na.ssl-images-amazon.com/images/M/MV5BYWVhZjZkYTItOGIwYS00NmRkLWJlYjctMWM0ZjFmMDU4ZjEzXkEyXkFqcGdeQXVyMTMxODk2OTU@._V1_UY67_CR0,0,45,67_AL_.jpg", "title": "Justice League"} ، {"الإجمالي": "27.5 مليون دولار" ، "أسابيع": "1" ، "عطلة نهاية الأسبوع": "27.5 مليون دولار" ، "الصورة": " https://images-na.ssl-images-amazon.com/images/M/MV5BYjFhOWY0OTgtNDkzMC00YWJkLTk1NGEtYWUxNjhmMmQ5ZjYyXkEyXkFqcGdeQXVyMjMxOTE0ODA@._V1_UX45_CR0,0,45,67_AL_.jpg", "title": "Wonder"} ، {"الإجمالي": "247.3 مليون دولار" ، "أسابيع": "3" ، "عطلة نهاية الأسبوع": "21.7 مليون دولار" ، "صورة": " https://images-na.ssl-images-amazon.com/images/M/MV5BMjMyNDkzMzI1OF5BMl5BanBnXkFtZTgwODcxODg5MjI@._V1_UY67_CR0,0,45,67_AL_.jpg", "title": "Thor: Ragnarok"}،... ]

أكثر ويب كاشطات والسير

Scrapy عبارة عن مكتبة مفصلة يمكنها القيام بأي نوع من عمليات الزحف على الويب التي تطلبها. عندما يتعلق الأمر بالعثور على معلومات في عناصر HTML ، بالإضافة إلى دعم Python ، فمن الصعب التغلب عليها. سواء كنت تقوم بإنشاء زاحف ويب أو التعرف على أساسيات تجريف الويب الحد الوحيد هو مدى استعدادك للتعلم.

إذا كنت تبحث عن المزيد من الطرق لإنشاء برامج زحف أو برامج روبوت ، فيمكنك محاولة ذلك بناء روبوتات تويتر و Instagram باستخدام بيثون كيفية بناء روبوتات تويتر و Instagram و Reddit باستخدام بيثونهل ترغب في بناء برامج التواصل الاجتماعي الخاصة بك؟ فيما يلي كيفية نشر التحديثات تلقائيًا إلى Twitter و Instagram و Reddit باستخدام Python. اقرأ أكثر . يمكن لبيثون بناء بعض الأشياء المذهلة في تطوير الويب، لذلك يستحق تجاوز برامج زحف الويب عند استكشاف هذه اللغة.

أنتوني غرانت كاتبة مستقلة تغطي البرمجة والبرمجيات. إنه أحد أهم علوم الكمبيوتر في البرمجة ، و Excel ، والبرامج ، والتكنولوجيا.