Web scraping can be defined as the method of collecting and restructuring data from websites. It can also be defined as the programmatic approach of obtaining website data in an automated manner. For instance, you want to extract the email IDs of all people who commented on a Facebook post. You can do this by
يمكن تعريف تجريف الويب على أنه طريقة لجمع البيانات وإعادة هيكلتها من مواقع الويب. يمكن تعريفه أيضا على أنه النهج البرنامجي للحصول على بيانات موقع الويب بطريقة آلية. على سبيل المثال ، تريد استخراج معرفات البريد الإلكتروني لجميع الأشخاص الذين علقوا على منشور على Facebook. يمكنك القيام بذلك بطريقتين. أولا ، يمكنك توجيه المؤشر إلى سلسلة عنوان البريد الإلكتروني لأي شخص. يمكنك بعد ذلك نسخه ولصقه في ملف. تعرف هذه الطريقة باسم الكشط اليدوي. ولكن ماذا لو كنت تريد جمع 2000 معرف بريد إلكتروني؟ بمساعدة أداة تجريف الويب ، يمكنك استخراج جميع معرفات البريد الإلكتروني في 30 ثانية بدلا من 3 ساعات إذا كنت تستخدم الكشط اليدوي.
يمكنك استخدام أدوات تجريف الويب لاستخراج المعلومات من مواقع الويب. ما عليك سوى معرفة كيفية النقر ، ولا يلزم معرفة البرمجة. هذه الأدوات موفرة للموارد وتوفر الوقت والتكلفة. يمكنك كشط ملايين الصفحات بناء على احتياجاتك دون القلق بشأن النطاق الترددي للشبكة. تنفذ بعض مواقع الويب برامج مكافحة الروبوتات التي لا تشجع الكاشطات على جمع البيانات. لكن أدوات تجريف الويب الجيدة تحتوي على ميزات مضمنة لتجاوز هذه الأدوات وتقديم تجربة تجريف سلسة.
لدى Python أدوات ممتازة لكشط البيانات من الويب. على سبيل المثال ، يمكنك استيراد مكتبة الطلبات لاسترداد المحتوى من صفحة ويب و bs4 (BeautifulSoup) لاستخراج المعلومات ذات الصلة. يمكنك اتباع الخطوات أدناه لكشط الويب في Python. سنقوم باستخراج المعلومات من هذا الموقع.
يجب عليك استيراد مكتبة الطلبات لجلب HTML لموقع الويب.
طلبات الاستيراد
يجب عليك تقديم طلب GET إلى موقع الويب. يمكنك القيام بذلك عن طريق لصق عنوان URL في وظيفة requests.get ().
r = requests.get ('http://www.cleveland.com/metro/index.ssf/2017/12/case_western_reserve_university_president_barbara_snyders_base_salary_and_bonus_pay_tops_among_private_colleges_in_ohio.html')
استخراج محتوى الموقع باستخدام r.content. يعطي محتوى الموقع بالبايت.
ج = r.المحتوى
يجب عليك استيراد مكتبة BeautifulSoup لأنها تجعل من السهل كشط المعلومات من صفحات الويب.
من bs4 استيراد شوربة جميلة
يجب عليك إنشاء كائن BeautifulSoup من المحتوى وتحليله باستخدام عدة طرق.
حساء = حساء جميل (ج) طباعة (soup.get_text ())
سوف تحصل على الإخراج (إنه مجرد جزء) إلى حد ما مثل هذا.
يتعين علينا العثور على محددات CSS الصحيحة لأننا نحتاج إلى استخراج البيانات المطلوبة. يمكننا العثور على المحتوى الرئيسي على صفحة الويب باستخدام طريقة .find() لكائن الحساء.
main_content = soup.find('div', attrs = {'class': 'entry-content'})
يمكننا استرداد المعلومات كنص من الجدول باستخدام سمة .text للحساء.
المحتوى = main_content. البحث ('ul').text
طباعة (محتوى)
استرجعنا نص الجدول كسلسلة. لكن المعلومات ستكون ذات فائدة كبيرة إذا قمنا باستخراج الأجزاء المحددة من السلسلة النصية. لتحقيق هذه المهمة ، نحتاج إلى الانتقال إلى التعبيرات العادية.
التعبيرات العادية (RegEx) هي سلسلة من الأنماط التي تحدد نمط البحث. الفكرة الأساسية هي:
لنفترض أننا نريد استخراج المعلومات التالية من جدول النص.
يمكنك استخراج الأجزاء الثلاثة من المعلومات باتباع الخطوات المذكورة أدناه.
استيراد إعادة واستخراج الرواتب ، عليك أن تجعل نمط الراتب. استخدم طريقة re.compile() لتجميع نمط تعبير عادي يتم توفيره كسلسلة في كائن نمط RegEx. علاوة على ذلك ، يمكنك استخدام pattern.findall() للعثور على جميع التطابقات وإعادتها كقائمة من السلاسل. ستمثل كل سلسلة تطابقا واحدا.
استيراد إعادة
salary_pattern = إعادة. compile(r'\$.+')
الرواتب = salary_pattern.findall (المحتوى)
تكرار نفس الإجراء لاستخراج أسماء الكليات. اصنع نمطا واستخرج الأسماء.
school_pattern = re.compile(r'(?:,|,\s)([A-Z]{1}.*?)(?:\s\(|:|,)')
schools = school_pattern.findall(content)
print(schools)
print(salaries)
كرر نفس الإجراء لاستخراج أسماء الرؤساء. اصنع نمطا واستخرج الأسماء المطلوبة.
name_pattern = re.compile(r'^([A-Z]{1}.+?)(?:,)', flags = re.M)
names = name_pattern.findall(content)
print(names)
الرواتب تبدو فوضوية وغير مفهومة. لذلك ، نستخدم فهم قائمة بايثون لتحويل رواتب السلسلة إلى أرقام. سنستخدم تشريح السلسلة وتقسيمها والانضمام وفهم القائمة لتحقيق النتائج المرجوة.
الرواتب = ['$876,001', '$543,903', '$2453,896']
[int(''.join(s[1:].split(','))) ل s في الرواتب]
الإخراج على النحو التالي:
يساعدك تصور البيانات على فهم البيانات بصريا بحيث يمكن الكشف عن الاتجاهات والأنماط والارتباطات. يمكنك ترجمة كمية كبيرة من البيانات إلى رسوم بيانية ومخططات ومرئيات أخرى لتحديد القيم المتطرفة واكتساب رؤى قيمة.
يمكننا استخدام matplotlib لتصور البيانات ، كما هو موضح أدناه.
استيراد المكتبات اللازمة كما هو موضح أدناه.
استيراد الباندا ك PD
استيراد matplotlib.pyplot كما plt
قم بعمل إطار بيانات الباندا للمدارس والأسماء والرواتب. على سبيل المثال ، يمكنك تحويل المدارس إلى إطار بيانات على النحو التالي:
df_school = pd. إطار البيانات (المدارس)
طباعة(df_school)
الإخراج هو:
وبالمثل ، يمكنك أن تفعل الشيء نفسه بالنسبة للرواتب والأسماء.
لتصور البيانات، يمكننا رسم تمثيل بياني بالأعمدة كما هو موضح أدناه.
df.plot (النوع = 'barh' ، x = 'الرئيس' ، y = 'الراتب')
الإخراج على النحو التالي:
يساعد تجريف الويب الشركات على استخراج معلومات مفيدة حول رؤى السوق والصناعات لتقديم خدمات مدعومة بالبيانات واتخاذ قرارات تعتمد على البيانات. الوكلاء ضروريون لكشط البيانات من مواقع الويب المختلفة للأسباب التالية بشكل فعال.
هل تعرف عدد الوكلاء المطلوبين للحصول على الفوائد المذكورة أعلاه؟ يمكنك حساب العدد المطلوب من الوكلاء باستخدام هذه الصيغة:
عدد الوكلاء = عدد طلبات الوصول / معدل الزحف
يعتمد عدد طلبات الوصول على المعلمات التالية.
من ناحية أخرى ، يقتصر معدل الزحف على عدد الطلبات التي يقدمها المستخدم في فترة زمنية معينة. تسمح بعض مواقع الويب بعدد محدود من الطلبات لكل مستخدم للتمييز بين طلبات المستخدمين الآلية والبشرية.
يمكنك استخدام الوكلاء في Python باتباع الخطوات أدناه.
طلبات الاستيراد
الوكيل = 'http://114.121.248.251:8080'url = 'https://ipecho.net/plain'
page = requests.get(url,
proxies={"http": proxy, "https": proxy})
طباعة (صفحة.نص)
الإخراج على النحو التالي:
ناقشنا أنه يمكننا استخدام تجريف الويب لاستخراج البيانات من مواقع الويب بدلا من استخدام الكشط اليدوي. تجريف الويب فعال من حيث التكلفة وعملية موفرة للوقت. تستخدمه الشركات لجمع معلومات الويب وإعادة هيكلتها لاتخاذ قرارات تعتمد على البيانات واكتساب رؤى قيمة. يعد استخدام الوكلاء أمرا ضروريا لتجريف الويب الآمن لأنه يخفي عنوان IP الأصلي للمستخدم من موقع الويب المستهدف. يمكنك استخدام مركز البيانات أو الوكلاء السكنيين لتجريف الويب. لكن تفضل استخدام الوكلاء السكنيين لأنها سريعة ولا يمكن اكتشافها بسهولة. علاوة على ذلك ، يمكننا استخدام التعبيرات العادية في Python لمطابقة أو العثور على مجموعات من السلاسل. هذا يعني أنه يمكننا استخراج أي نمط سلسلة من النص بمساعدة التعبيرات العادية. رأينا أيضا أن تصور البيانات يحول كميات هائلة من البيانات إلى مخططات ورسوم بيانية ومرئيات أخرى تساعدنا في اكتشاف الحالات الشاذة وتحديد الاتجاهات المفيدة في البيانات.