شعار proxyscrape داكن

كشط الويب للمبتدئين: أساسيات وإطار العمل باستخدام بايثون

بايثون, كشط, Mar-29-20215 دقائق للقراءة

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

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

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

الخطوات المتبعة في كشط الويب باستخدام بايثون

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

لقد رأينا الآن كيف تعمل عملية كشط الويب. لنبدأ بالبرمجة,

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

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

طلبات تثبيت الأنابيب
 تثبيت نقطة تثبيت html5lib
 تثبيت نقطة تثبيت bs4

الخطوة2: الوصول إلى محتوى HTML من صفحة الويب

طلبات الاستيراد 
URL = "http://www.values.com/inspirational-quotes"
r = طلبات.get(URL) 
طباعة(r.content)

سيتم عرض مخرجات النموذج,

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

في السطر الأول من الكود نقوم باستيراد مكتبة الطلبات، ثم نحدد عنوان URL لصفحة الويب التي نريد كشطها، وفي السطر الثالث من الكود نرسل طلب HTTP إلى عنوان URL المحدد ونحفظ استجابة الخادم في كائن يسمى r.وأخيرًا طباعة(r.content) ونقوم بإرجاع محتوى HTML الخام لصفحة الويب.

الخطوة3: تحليل محتوى HTML

استيراد الطلبات 
من bs4 bs4 استيراد الحساء الجميل 
  
عنوان URL = "http://www.values.com/inspirational-quotes"
r = طلبات.get(URL) 
  
حساء = BeautifulSoup(r.content, 'html5lib') # إذا تسبب هذا السطر في حدوث خطأ، قم بتشغيل 'pip install html5lib' أو تثبيت html5lib 
طباعة(soup.prettify()))

المخرجات:

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

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

في الشيفرة أعلاه، أنشأنا كائن الحساء الجميل عن طريق تمرير وسيطتين:

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". لذا، سنجد عنصر القسمة هذا (الذي يُطلق عليه جدول في الكود) باستخدام طريقة البحث():

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

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

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

تُعد طريقة 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_qoutes.csv الخاص بنا,

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

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

لماذا استخدام كشط الويب؟

فيما يلي بعض السيناريوهات الواقعية التي يمكن أن يكون فيها كشط الويب ذا فائدة كبيرة,

توليد العملاء المحتملين

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

أبحاث السوق 

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

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

إنشاء القوائم

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

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

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

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

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

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

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

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