fbpx

دليلك لتعلم تجريف البيانات “Data Scraping” باستخدام بايثون

كشخص دخل إلى عالم البيانات من خلفية صحفية، كان مصطلح تجريف البيانات غريبًا نوعًا ما، ثم بعد ذلك تمثل ليا هذا المصطلح في استخراج الجداول من صفحات الويب، وكان مقصورًا عندي على بعض المعادلات الخاصة بجداول جوجل مثل ImportHtml أو ImportXml وبعض الأدوات الأخري مثل البرنامج الأشهر لتجريف الجداول والنصوص من ملفات الPDF برنامج Tabula ولكن بعدما تعلمت لغة البرمجة الأشهر بايثون أصبح لمصطلح تجريف البيانات معنى آخر. وهو عملية استيراد المعلومات من مواقع ويب بطريقة آلية لإنتاج قواعد بيانات منسقة بطريقة منظمة وجاهزة بحيث يسهل معالجتها وتحليلها.

لكن هل هذه العملية باستخدام البرمجة والأكواد صعبة؟

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

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

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

تقدم بايثون مجموعة كبيرة من المكتبات الخاصة بتجريف البيانات  Data Scraping لكن ما هي المكتبات المشهورة التي يمكن أن تساعدك في تجريف الويب؟

مكتبة Beautiful Soup لتجريف البيانات

هي واحدة من أفضل مكتبات تجريف البيانات وأكثرها شيوعًا والتي يمكن استخدامها لاستخراج البيانات من ملفات HTML و XML. تساعدك هذه المكتبة في تنظيف وتحليل المستندات المستخرجة من صفحات الويب، من الممكن استخدام هذه المكتبة لقراءة عناصر ملف html والبحث فيها والحصول على قيم هذه العناصر وبذلك يتم توفير وقت وجهد كبيرين.

لتثبيت مكتبة Beautiful Soup نكتب:

pip install beautifulsoup

مصدر لتعلم المكتبة

https://www.crummy.com/software/BeautifulSoup

https://realpython.com/beautiful-soup-web-scraper-python/

 

مكتبة Scrapy لتجريف البيانات

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

تقوم مكتبة Scrapy بتجريف البيانات من HTML/XML عن طريق مسارات XPath والمحددات CSS selectors كما يدعم التعابير القياسية Regex .وتقوم بتصدير البيانات على هيئة (JSON, CSV, XML) على وسائط التخزين المختلفة (FTP, S3, local filesystem).

لتثبيت المكتبة في محرر الاكواد لديك قم بكتابة

pip install Scrapy

مصدر لتعلم المكتبة

https://docs.scrapy.org/en/latest

https://realpython.com/web-scraping-with-scrapy-and-mongodb/

 

مكتبة Requests 

من أشهر مكتبات بايثون وهي مكتبة مكملة لعملية التجريف لا تقوم بالتجريف لوحدها بل وظيفتها فقط التعرف والحصول على مكونات الصفحة ك HTML وهي تدعم كل العمليات الخاصة ببروتوكول HTTP مثل عمليات POST, GET واستقبال ومعالجة الرد، وهي هذه المكتبة سهلة في الاستخدام وأغلب عمليات تجريف الانترنت لا تستغني عن هذه المكتبة المهمة.

لتثبيت المكتبة نكتب:

pip install requests

في البداية نستورد مكتبة requests ومن ثم نستخدم الدالة get لإرسال request والحصول على الرد الناتج من طلب العنوان الخاص بصفحة الويب الذي أدخلناه للدالة . النتيجة سيتم حفظها في المتغير page والذي هو عبارة عن كائن من نوع Response يتضمن معلومات الرد.

مصدر لتعلم المكتبة

https://realpython.com/python-requests/

 

مكتبة Selenium

من أشهر مكتبات بايثون وهي واحدة من أهم المكتبات التي تستخدم في بايثون، لأن لها العديد من الوظائف غير المساعدة في تجريف البيانات مثل اختبار تطبيقات الويب عن طريق محاكاة سلوكيات المستخدم على مواقع الإنترنت من خلال تنفيذ التصفح التلقائي (Web Automation) كما تستخدم تستخدم في مجال أتمتة المنشورات والرسائل والتعليقات في مواقع التواصل كما تستخدم في البحث عن الثغرات الأمنية.

لتثبيت المكتبة نكتب:

  pip install -U selenium

يمكن أن تستخدم جنبًا إلى جنب مع كتبتي Scrapy و BeautifulSoup لتعزيز تجريف مواقع الويب!

https://realpython.com/lessons/dynamic-websites/

 

مكتبة Tweepy

مكتبة Tweepy  من أشهر المكتبات وهي مكتبة مفتوحة المصدر وسهلة الاستخدام وتسمح للمشاريع التي بلغة البايثون بالوصول الواجهة البرمجية لتويتر بكل سهولة.

يمكن استخدامها بعد الحصول مفاتيح ورموز (Keys and tokens) الوصول إلى بيانات تويتر بعد التسجيل كحساب مطور على تويتر

لتثبيت المكتبة 

>> pip install tweepy

ثم بعد ذلك تستورد المكتبة باستخدام جملة import:

import tweepy

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

consumer_key = 'your_consumer_key'

consumer_secret = 'your_consumer_secret'

access_token = 'your_access_token'

access_token_secret = 'your_access_token_secret'

 ثم استخدم هذا الكود :

In:

auth = tweepy.OAuthHandler(API_key, API_secret_key)

auth.set_access_token(access_token, access_token_secret)

api = tweepy.API(auth)

بعد ذلك يمكنك استيراد البيانات من تويتر 

على سبيل المثال لو أردنا تجريف تغريدات خاصة بهاشتاج أو كلمة مفتاحية بلغة محددة يمكن استخدام هذا الكود.

In:

query = "تحليل البيانات"

language = "ar"

twitter_data = api.search(q=query, lang=language)

variables_set = [[tweet.user.screen_name, tweet.user.location,tweet.text,tweet.retweet_count] for tweet in twitter_data]

my_data = pd.DataFrame(data=variables_set, columns=['user', "location","tweets","retweet"])

my_data

يمكنك استبدال “تحليل البيانات” بأي هاشتاج آخر  أو كلمة مفتاحية أخرى. كما يوجد مكتبات أخرى لذلك أرشح لكم هذه المجموعة من الفيديوهات والتي تتيح أكواد كاملة يمكن إعادة كتابتها 

https://www.youtube.com/watch?v=r1iBHTkkpzY&list=PLQpVVU8sLpqy7OAavQWhd6WdFhz_mM3T9&index=9

http://socialmedia-class.org/twittertutorial.html

https://github.com/Jefferson-Henrique/GetOldTweets-python

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

 

 

 

 

 

مقالات ذات صلة

لغات برمجة يحتاج إلى تعلمها كل صحفي بيانات

أثناء رحلة بحثي عن عمل، وجدت فرصة في مدرسة البيانات. أتاح لي الموقع الفرصة لمعرفة جانب مختلف من الصحافة وهي “صحافة البيانات” اكتشفت أن هناك لغات برمجة يجب أن أتعلمها. بطبيعة الحال بدأت في البحث حول صحافة البيانات وما هي متطلباتها، وجدت أنه من المهم أن أعرف أكثر حول لغات البرمجة لمعرفة كيفية التعامل مع البيانات. فما هي لغات البرمجة التي يجب أن أتعلمها؟ 

التعليقات