شعار proxyscrape داكن

سيلينيوم كشط الويب - كل ما تحتاج إلى معرفته في عام 2024

أدلة إرشادية, الوكلاء, بايثون, كشط, مايو-05-20225 دقائق للقراءة

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

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

ما هو مسح الويب؟

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

السيلينيوم - ما هو؟

سيلينيوم هي مكتبة بايثون مجانية ومفتوحة المصدر، وهي عبارة عن إطار عمل اختبار آلي يستخدم بشكل أساسي لاختبار تطبيقات الويب والتحقق من صحتها عبر متصفحات مختلفة. ويمكنك استخدام أي لغة برمجة، مثل C# وJava واللغة المفضلة لدي، وهي لغة بايثون. برنامج سيلينيوم هو مجموعة من الأدوات التي تتكون من:

  • بيئة سيلينيوم للتطوير المتكامل (IDE).
  • جهاز تحكم عن بعد سيلينيوم.
  • ويبدريفر.
  • شبكة السيلينيوم.

دعونا نرى كيفية استخدام Selenium مع Python لأتمتة عملية كشط الويب بالكامل.

بيان المشكلة:

نهدف إلى كشط أسماء ورواتب لاعبي الدوري الأمريكي لكرة السلة للمحترفين للعقد الماضي، ثم حفظ البيانات في شكل إطار بيانات. ملاحظة: لتعلم وشرح كيفية عمل كشط الويب من سيلينيوم، نستخدم موقع hoopshype.

تثبيت برنامج تشغيل كروم:

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

الخطوة 1: افتح متصفح كروم-> انقر على أيقونة "همبرغر" الموجودة في الزاوية العلوية اليمنى من المتصفح.

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

نافذة إصدار جوجل كروم

ملاحظة: إذا كان لديك أي تحديثات، فمن الأفضل تثبيت هذه التحديثات قبل تثبيت برنامج تشغيل الكروم.

بمجرد معرفة الإصدار، انتقل إلى موقع برنامج تشغيل Chrome على الويب وقم بتنزيل برنامج التشغيل بناءً على إصدار Chrome لديك.

تثبيت سيلينيوم:

أسهل طريقة لتثبيت حزمة سيلينيوم هي من خلال PIP (Package Installer Python). يمكنك فتح أي دفتر ملاحظات، سواءً من Juypter أو Google Collab، وكتابة كود بايثون التالي:

تثبيت سيلينيوم

يقوم الأمر أعلاه بتنزيل جميع الحزم التابعة لـ Selenium. والآن، دعنا نرى كيفية تنفيذ كشط الويب باستخدام سيلينيوم.

كشط الويب باستخدام سيلينيوم:

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

الخطوة 1: استيراد جميع المكتبات اللازمة. Pandas وSelenium webdriver هما المكتبتان الرئيسيتان لكشط الويب البسيط. فيما يلي كود بايثون لاستيراد جميع المكتبات المطلوبة:

من selenium استيراد webdriver
من selenium.webdriver.common.keys استيراد المفاتيح
استيراد بانداس ك pd

الخطوة 2: بعد استيراد المكتبات، الخطوة التالية هي بدء تشغيل برنامج تشغيل كروم. يظهر كود بايثون أدناه لبدء تشغيل برنامج التشغيل

برنامج التشغيل = webdriver.Chrome(r"\Selenium\chromedriver.exe")

ملاحظة: اذكر في الوسيطة المسار الكامل لموقع برنامج تشغيل Chrome على نظامك المحلي.

الخطوة 3: بمجرد بدء تشغيل برنامج التشغيل، يجب أن يفتح متصفح كروم في نافذة جديدة. ولكن يجب أن تكون النافذة فارغة نظرًا لعدم وجود عنوان URL للخلاصة. يظهر كود بايثون لعنوان URL للخلاصة المستهدفة أدناه:

seed_url = 'https://hoopshype.com/salaries/players/'
driver.get(seed_url)

الخطوة 4: بمجرد إدخال عنوان URL الخاص بالموجز، في النافذة الجديدة، يجب أن تكون قادرًا على رؤية الموقع المستهدف. العملية التالية هي العثور على اسم كل لاعب في الدوري الأمريكي للمحترفين. في سيلينيوم، يمكنك العثور على عناصر HTML بالطرق التالية:

  • بطاقة الهوية
  • محدد CSS
  • محدد مسار XPATH
  • الاسم
  • اسم الفئة
  • اسم العلامة

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

  • اسم اللاعب
  • الراتب

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

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

فحص صفحة الهدف SIte

الآن، كما ذكرنا أعلاه، الهدف هو استخراج أسماء اللاعبين. لذا، الخطوة الأولى هي العثور على عنصر لاعب واحد والعامل المشترك بين جميع عناصر اللاعب. لذا، في نفس العملية، انقر بزر الماوس الأيمن على اسم اللاعب وفحصه. يجب أن يأخذك هذا مباشرةً إلى موقع العنصر الخاص بك. بدلاً من أخذ اسم لاعب واحد في السيناريو الخاص بنا، سنأخذ أسماء جميع اللاعبين. العنصر المشترك بين جميع اللاعبين هو "td class-'name". لذا، إذا استخدمنا هذا العنصر وقمنا بتكراره، سنحصل على أسماء جميع اللاعبين. فيما يلي كود بايثون لاستخراج اسم اللاعب:

nba_players = driver.find_elements_by_xpath('//td[@class="name"])
اللاعبين_قائمة اللاعبين = []
ل p في نطاق(len(nba_players)):
    players_list.append(nba_players[p].text)
طباعة(player_list)

الشرح: كما ذكرنا أعلاه، نحن نبحث عن عنصر كود HTML باستخدام نهج XPATH. من الواضح أننا نحتاج إلى مسار XPATH لعناصر متعددة. أسهل طريقة هي العثور على عنصر الاسم، وهو "td class-name". انقر بزر الماوس الأيمن على العنصر وحدد "نسخ". يجب أن تحصل على العديد من الخيارات، مثل نسخ مسار JS ونسخ XPATH. اختر نسخ مسار XPATH، ويجب أن تحصل تلقائيًا على موقع XPATH للعنصر. الصق المسار في وسيطة find_elements_by_XPATH. بمجرد لصق المسار، يجب أن تبدأ Python في تحديد هذه العناصر والحصول على عناوينها، وليس الاسم الفعلي. للحصول على الأسماء الفعلية للعناصر، سنقوم بتكرار الدالة وإلحاق النتائج بقائمة فارغة كمخرجات. بمجرد تنفيذ مقتطف الشيفرة أعلاه، يجب أن تحصل على المخرجات كما هو موضح في الصورة أدناه.

الإخراج لاستخراج اسم اللاعبين

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

الخطوة 6: يتم استخراج بيانات الراتب باستخدام كود بايثون كما هو موضح أدناه:

player_salary=driver.find_elements_by_xpath('//td[@class="hh-salaries-sorted"])
salary_list=[]
ل s في النطاق(len(len(player_salary)):
    salary_list.append(player_salary[s].text)
طباعة(salary_list)

الشرح: العملية هي نفسها. الاختلاف الوحيد هو العنصر المشترك بين اللاعبين. عنصر الويب "td class-'hh-salaries-sort" هو العنصر المشترك. بعد العثور على العنصر، نقوم بإنشاء قائمة فارغة لتكرار الدالة بأكملها وإلحاق تفاصيل الرواتب بالقائمة الفارغة. يجب أن يبدو الناتج مثل الصورة الموضحة أدناه:

مخرجات استخراج راتب اللاعبين

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

بالنسبة إلى i في النطاق(2010,2021):
    Page_number = str(i) + '-' + str(i+1) +'/'
    URL_url = 'https://hoopshype.com/salaries/players/' + رقم_الصفحة
    driver.get(feed_url)
    
    اللاعبين = driver.driver.find_elements_by_xpath('//td[class="name"])
    الرواتب = driver.find_elements_by_xpath('//td[class="hh-salaries-sort"]') 
    
    لاعب = []
   ل j في النطاق(len(player(player))):
        player.append(player[j].text)
    
    الراتب = []
   بالنسبة إلى k في النطاق(len(salaries(len(salaries))):
        salary.append(salaries[k].text)

الشرح: كما ذكرنا أعلاه، نهدف إلى الحصول على بيانات السنوات العشر الأخيرة. للقيام بذلك، علينا تنفيذ ترقيم الصفحات. ترقيم الصفحات هو عملية إضافة أرقام متتالية، عادةً ما تكون أرقام الصفحات، لتحديد تسلسل ترتيب الصفحة. يتم تمثيل الفصول بتنسيق YYYY/MM. للتعرف على ذلك، نستخدم تقنية التسلسل. بعد ذلك، نستخدم نفس العملية ونفس الرمز داخل الحلقة.

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

df = pd.DataFrame(الأعمدة=['لاعب'،'راتب'،'سنة'])
البيانات = قائمة(zip(player[1:],salary[1:])) 
df1 = pd.DataFrame(البيانات، الأعمدة=['لاعب'،'راتب']) 
df1['السنة'] = i
df = df.append(df1)

ملاحظة: في السطر الثاني من الكود، يمكنك أن ترى أنني قمت بالتقطيع. والسبب وراء ذلك هو أنك عندما ترى مخرجات كل من أسماء اللاعبين ورواتبهم، كان الفهرس الأول، أي الفهرس 0، هو "PLAYER" و "DATE". لا تجلب هذه العناصر أهمية كبيرة إلى الجدول. لذا، يمكننا إسقاط هذه العناصر.

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

هذا كل شيء! لقد أنجزت بنجاح الأتمتة وكشط الويب باستخدام سيلينيوم وبايثون.

الأسئلة الشائعة:

1. هل السيلينيوم مناسب لكشط الويب؟
نعم، إذا كنت تخطط لكشط صفحات الويب الديناميكية التي تستخدم JavaScript. ولكنه أيضًا خيار جيد للبايثون. سيلينيوم هو نقطة انطلاق جيدة للمبتدئين المهتمين بكشط الويب.
2. أيهما أفضل، الحساء الجميل أم السيلينيوم؟
تعتمد هذه الإجابة على نوع صفحة الويب المستهدفة وحجم مشروعك. إذا كنت تتطلع إلى كشط صفحة ويب ثابتة صغيرة وجيدة التنظيم، فإن BeautifulSoup هو الأفضل. أما إذا كان مشروعك يتضمن صفحات ويب ديناميكية منظمة ومعقدة، فقد يكون كشط الويب سيلينيوم هو الخيار الأفضل.
3. ما هي أفضل الأدوات لكشط الويب؟
Python هي الأداة الأفضل والأكثر ملاءمة لإجراء كشط الويب. تعد مكتبات بايثون، مثل BeautifulSoup وSelenium وSelenium وCorder، بالإضافة إلى أدوات أخرى مثل Scrapy أفضل الأدوات لكشط الويب.

الخلاصة:

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

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