داكن proxyscrape شعار

تجريف الويب للمبتدئين: الأساسيات والإطار باستخدام Python

بايثون ، كشط ، مارس-01-20215 دقائق للقراءة

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

ستغطي هذه المقالة أساسيات تجريف الويب من خلال اللعب بإطار عمل Python المسمى Beautiful Soup. سنستخدم Google Colab كبيئة ترميز لدينا.

الخطوات المتبعة في تجريف الويب باستخدام Python

  1. بادئ ذي بدء ، نحتاج إلى تحديد صفحة الويب التي نريد كشطها وإرسال طلب HTTP إلى عنوان URL هذا. استجابة لذلك، يقوم الخادم بإرجاع محتوى HTML لصفحة الويب. لهذه المهمة ، سنستخدم مكتبة HTTP تابعة لجهة خارجية للتعامل مع طلبات python.
  2. بمجرد نجاحنا في الوصول إلى محتوى HTML ، تأتي المهمة الرئيسية لتحليل البيانات. لا يمكننا معالجة البيانات ببساطة من خلال معالجة السلسلة لأن معظم بيانات HTML متداخلة. هذا هو المكان الذي يأتي فيه المحلل اللغوي ، مما يجعل بنية شجرة متداخلة لبيانات HTML. واحدة من مكتبات محلل HTML الأكثر تقدما هي html5lib.
  3. بعد ذلك يأتي اجتياز الشجرة ، والذي يتضمن التنقل والبحث في شجرة التحليل. لهذا الغرض ، سوف نستخدم حساء جميل (مكتبة بيثون تابعة لجهة خارجية). تستخدم مكتبة Python هذه لسحب البيانات من ملفات HTML و XML.

لقد رأينا الآن كيف تعمل عملية تجريف الويب. لنبدأ بالترميز ،

الخطوة 1: تثبيت مكتبات الجهات الخارجية

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

طلبات تثبيت النقطة
نقطة تثبيت html5lib
نقطة تثبيت BS4
الخطوة 2: الوصول إلى محتوى HTML من صفحة الويب
طلبات الاستيراد 
URL = "http://www.values.com/inspirational-quotes" r = requests.get(URL) 
طباعة (R.المحتوى)

سيعرض إخراج النموذج ،

دعونا نحاول فهم هذا الجزء من التعليمات البرمجية ،

  1. في السطر الأول من التعليمات البرمجية ، نقوم باستيراد مكتبة الطلبات.
  2. ثم نقوم بتحديد عنوان URL لصفحة الويب التي نريد كشطها.
  3. في السطر الثالث من التعليمات البرمجية ، نرسل طلب HTTP إلى عنوان URL المحدد ونحفظ استجابة الخادم في كائن يسمى r.
  4. أخيرا ، ترجع print(r.content) محتوى HTML الخام لصفحة الويب.
الخطوة 3: تحليل محتوى HTML
طلبات الاستيراد 
من bs4 استيراد شوربة جميلة 
  
عنوان URL = "http://www.values.com/inspirational-quotes"
r = الطلبات. الحصول على (URL) 
  
حساء = حساء جميل (r.content ، 'html5lib') # إذا تسبب هذا السطر في حدوث خطأ ، فقم بتشغيل "pip install html5lib" أو تثبيت html5lib 
طباعة (حساء.جميل ())
الناتج:

يعطي مخرجات طويلة جدا. بعض لقطات الشاشة مرفقة أدناه.

أحد أعظم الأشياء في Beautiful Soup هو أنه مبني على مكتبات تحليل HTML مثل html5lib و html.parse و lxml وما إلى ذلك والتي تسمح بكائن Beautiful Soap وتحديد مكتبة المحلل اللغوي ليتم إنشاؤها في وقت واحد. 

في الكود أعلاه ، أنشأنا كائن Beautiful Soup عن طريق تمرير وسيطتين:

r.content: محتوى HTML الخام.
html5lib: يحدد محلل HTML الذي نريد استخدامه.

أخيرا ، تتم طباعة soup.prettify() ، مما يعطي التمثيل المرئي لشجرة التحليل من محتوى HTML الخام.

الخطوة 4: البحث والتنقل في شجرة التحليل

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

#Python program to scrape website  
#and save quotes from website 
import requests 
from bs4 import BeautifulSoup 
import csv 
   
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL) 
   
soup = BeautifulSoup(r.content, 'html5lib') 
   
quotes=[]  # a list to store quotes 
   
table = soup.find('div', attrs = {'id':'all_quotes'})  
   
for row in table.findAll('div', attrs = {'class':'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}): 
    quote = {} 
    quote['theme'] = row.h5.text 
    quote['url'] = row.a['href'] 
    quote['img'] = row.img['src'] 
    quote['lines'] = row.img['alt'].split(" #")[0] 
    quote['author'] = row.img['alt'].split(" #")[1] 
    quotes.append(quote) 
   
filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f: 
    w = csv.DictWriter(f,['theme','url','img','lines','author']) 
    w.writeheader() 
    for quote in quotes:
        w.writerow(quote)

قبل المضي قدما ، يوصى بتصفح محتوى HTML لصفحة الويب ، والذي قمنا بطباعته باستخدام طريقة soup.prettify() ومحاولة العثور على نمط للانتقال إلى علامات الاقتباس.

الآن سأشرح كيف ننجز ذلك في الكود أعلاه ، 

إذا انتقلنا عبر علامات الاقتباس ، فسنجد أن جميع علامات الاقتباس موجودة داخل حاوية div معرفها "all_quotes". لذلك نجد أن عنصر div (يسمى الجدول في الكود) باستخدام طريقة find() :

table = soup.find('div', attrs = {'id':'all_quotes'})

الوسيطة الأولى في هذه الوظيفة هي أن علامة HTML تحتاج إلى البحث. الوسيطة الثانية هي عنصر نوع قاموس لتحديد السمات الإضافية المقترنة بهذه العلامة. ترجع طريقة find() العنصر المطابق الأول. يمكن للمرء أن يجرب table.prettify() للحصول على شعور أفضل بما يفعله هذا الجزء من التعليمات البرمجية.

إذا ركزنا على عنصر الجدول ، فإن حاوية div تحتوي على كل اقتباس تكون فئته اقتباسا. لذلك سوف نحلق عبر كل حاوية div فئتها اقتباس.

هنا تعد طريقة findAll() مفيدة جدا تشبه طريقة find() فيما يتعلق بالحجج ، ولكن الاختلاف الرئيسي هو أنها ترجع قائمة بجميع العناصر المطابقة. 

نحن نكرر من خلال كل اقتباس باستخدام متغير يسمى الصف.

دعنا نحلل عينة واحدة من محتوى صف HTML لفهم أفضل:

الآن ضع في اعتبارك الجزء التالي من التعليمات البرمجية:

for row in table.findAll('div', attrs = {'class':'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}): 
    quote = {} 
    quote['theme'] = row.h5.text 
    quote['url'] = row.a['href'] 
    quote['img'] = row.img['src'] 
    quote['lines'] = row.img['alt'].split(" #")[0] 
    quote['author'] = row.img['alt'].split(" #")[1] 
    quotes.append(quote) 
   
filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f: 
    w = csv.DictWriter(f,['theme','url','img','lines','author']) 
    w.writeheader() 
    for quote in quotes:
        w.writerow(quote)
نحن هنا بصدد إنشاء قاموس لحفظ جميع المعلومات حول عرض الأسعار. يتم استخدام تدوين النقطة للوصول إلى البنية المتداخلة. للوصول إلى النص داخل عنصر HTML ، نستخدم .text:

علاوة على ذلك ، يمكننا أيضا إضافة سمات العلامة وإزالتها وتعديلها والوصول إليها. لقد فعلنا ذلك من خلال التعامل مع العلامة كقاموس:

اقتباس ['url'] = row.a ['href']
ثم قمنا بإلحاق جميع علامات الاقتباس بالقائمة المسماة علامات الاقتباس. 

أخيرا ، سنقوم بإنشاء ملف CSV ، والذي سيتم استخدامه لحفظ بياناتنا.

اسم الملف = 'inspirational_quotes.csv'

لقد قمنا بتسمية ملفنا inspirational_qoutes.csv وحفظنا جميع علامات الاقتباس فيه لاستخدامها في المستقبل أيضا. إليك كيف يبدو ملف inspirational_quotes.csv الخاص بنا ،

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

ملاحظة: في بعض الحالات ، يعتبر تجريف الويب غير قانوني ، مما قد يتسبب في حظر عنوان IP الخاص بك بشكل دائم بواسطة موقع الويب. لذلك عليك أن تكون حذرا وأن تتخلص فقط من مواقع الويب وصفحات الويب التي تسمح بذلك. 

لماذا استخدام تجريف الويب؟

بعض سيناريوهات العالم الحقيقي التي يمكن أن يكون فيها تجريف الويب ذا فائدة كبيرة هي ،

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

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

  • يمكن استخدامه لتحليل اتجاهات السوق.
  • يمكن أن يساعدنا في التنبؤ بأسعار السوق.
  • يسمح بتحسين نقاط الدخول وفقا لاحتياجات العملاء.
  • يمكن أن يكون مفيدا جدا في مراقبة المنافسين.
إنشاء قوائم

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

مقارنة المعلومات

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

المعلومات المجمعة

يمكن أن يساعد تجريف الويب في تجميع المعلومات وعرضها في شكل منظم للمستخدم. دعونا ننظر في حالة مجمعي الأخبار. سيتم استخدام تجريف الويب بالطرق التالية ،

  1. باستخدام تجريف الويب ، يمكن للمرء جمع المقالات الأكثر دقة وذات الصلة.
  2. يمكن أن يساعد في جمع روابط لمقاطع الفيديو والمقالات المفيدة.
  3. بناء الجداول الزمنية وفقا للأخبار.
  4. التقاط الاتجاهات وفقا لقراء الأخبار.

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

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