شعار proxyscrape داكن

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

أدلة إرشادية, بايثون, كشط, Dec-19-20215 دقائق للقراءة

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

جدول المحتويات

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

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

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

لماذا يتعين على شخص ما استخراج كميات كبيرة من المعلومات من المواقع الإلكترونية؟ لفهم ذلك، انظر إلى التطبيقات التالية لكشط الويب.

  • البحث والتطوير - يمكنك جمع مجموعات بيانات كبيرة (درجة الحرارة والمعلومات العامة وغيرها) من المواقع الإلكترونية وتحليلها لإجراء استطلاعات الرأي للبحث والتطوير.
  • مقارنة الأسعار - تستخدم شركات وخدمات مثل ParseHub خدمات مثل ParseHub تجريف الويب لجمع البيانات من مواقع التسوق عبر الإنترنت ومقارنة أسعار المنتجات.
  • إعلانات الوظائف - يمكنك استخدام كشط الويب لجمع التفاصيل المتعلقة بالوظائف الشاغرة والمقابلات من مواقع الويب المختلفة وإدراجها في مكان واحد. 
  • كشط وسائل التواصل الاجتماعي - يمكنك استخدام كشط الويب لجمع البيانات من مواقع التواصل الاجتماعي مثل Instagram وTwitter ومعرفة ما هو رائج.
  • جمع عناوين البريد الإلكتروني - تستخدم العديد من الشركات البريد الإلكتروني كوسيلة للتسويق. فهم يستخدمون كشط الويب لجمع معرّفات البريد الإلكتروني ثم إرسال رسائل البريد الإلكتروني بالجملة.

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

يمكنك كشط البيانات من المواقع الإلكترونية باتباع الخطوات التالية.

  • احصل على عنوان URL الذي تريد كشطه
  • فحص الصفحة
  • ابحث عن البيانات التي عليك استخراجها
  • اكتب الكود
  • تشغيل الكود واستخراج البيانات
  • تخزين البيانات بالتنسيق المطلوب

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

بانداس - تُستخدم بانداس لمعالجة البيانات وتحليلها. يمكنك استخدام هذه المكتبة لاستخراج البيانات وتخزينها بالصيغة المطلوبة.

حساء جميل - هي حزمة Python لتحليل مستندات HTML و XML. تقوم بإنشاء أشجار التحليل التي تساعد في استخراج البيانات من المواقع الإلكترونية بسهولة.

الطلبات - إنها مكتبة HTTP بسيطة.

سنستخدم هذا الموقع لاستخراج عدد حالات كوفيد-19. بعد ذلك، سنقوم بتحليل البيانات وإنشاء بعض التصورات.

مكتبات الاستيراد

يمكنك استيراد الطلبات و BeautifulSoup في Python لكشط الويب، كما هو موضح أدناه.

استيراد الطلبات 
من bs4 bs4 استيراد الحساء الجميل

عنوان URL لكشط البيانات

حدد عنوان URL الخاص بالموقع الإلكتروني الذي يجب عليك كشط البيانات منه. عليك استخدام طريقة requests.get() لإرسال طلب GET إلى عنوان URL المحدد. علاوة على ذلك، يجب عليك إنشاء مُنشئ BeautifulSoup الذي سيأخذ وسيطتي السلسلة كما هو موضح في الكود أدناه.

عنوان url = 'https://www.worldometers.info/coronavirus/countries-where-coronavirus-has-spread/'
الصفحة = الطلبات.get(url) 
الحساء = الحساء الجميل(page.text, 'html.parser') 
  
البيانات = []

كشط كل عنصر

يمكنك كشط كل عنصر في جدول URL'sURL'sURL باستخدام طريقة soup.find_all(). فهو يُرجع كائنًا يوفر وصولًا قائمًا على الفهرس إلى التكرارات التي تم العثور عليها ويمكن طباعته باستخدام حلقة for أو بينما.

data_iterator = iter(soup.find_all('td'))

استخدام الحلقة

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

بينما صحيح 
   حاول: 
        البلد = التالي(data_iterator). text 
        تم التأكيد = التالي(data_iterator). text 
        الوفيات = التالي(data_iterator). text 
        قارة = التالي(data_iterator).text

بالنسبة للعمودين "المؤكد" و"الوفيات"، تأكد من إزالة الفواصل وتحويلها إلى int. 

data.append(( 
            الدولة, 
            (تم التأكيد.replace(', ', '')), 
            (الوفيات.replace(',', '')), 
            قارة
        )) 
    
    باستثناء إيقاف التكرار: 
       استراحة

عندما يكون عدد العناصر المتبقية للتكرار هو صفر، سيظهر خطأ StopIteration.

إنشاء إطار بيانات بانداس

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

استيراد مكتبة بانداس لإنشاء إطار بيانات.

data.sort(key(key = lambda row: row[1], reverse = True)
استيراد بانداس ك pd
df = pd.DataFrame(data,columns='country','number of cases','deaths','continent'],dtype=float)
df.head()
df['عدد الحالات'] = [x.replace('، ',', '') ل x في df ['عدد الحالات']]
df[' Number of cases] = pd.to_numeric(df['Number of cases])
دف

ستحصل على الناتج أدناه:

للحصول على معلومات حول إطار البيانات، استخدم df.info().

df.info()

إنشاء عمود معدل_الوفاة

سننشئ عمودًا جديدًا باسم معدل_الموت كما هو موضح أدناه.

dff = df.sort_values(حسب ='عدد الحالات'، تصاعدي = خطأ)
dff['معدل الوفيات] = (dff['الوفيات]/ dff['عدد الحالات])*100
dff.head()

يكون الناتج على النحو التالي.

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

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

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

أنواع البروكسيات لكشط الويب

يمكنك استخدام الوكيلين أدناه لكشط البيانات من المواقع الإلكترونية.

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

تصور البيانات باستخدام بايثون

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

مكتبات الاستيراد

يجب عليك استيراد المكتبات التالية لتصور البيانات كما هو موضح أدناه.

استيراد سيبورن باسم sns
استيراد matplotlib.pyplot باسم plt
من بيلاب استيراد rcParams

رسم مخطط زوجي

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

rcParams['figure.figsize'] = 15، 10
من matplotlib.pyplot استيراد الشكل
شكل(num=None, figsize=(20, 6), dpi=80, facecolor='w', edgecolor='k')
sns.pairplot(dff,hue='Continent')

ستحصل على الناتج على النحو التالي.

رسم مخطط عمودي

يمكنك رسم مخطط شريطي يعرض البيانات الفئوية على شكل أشرطة مستطيلة ويقارن بين قيم الفئات المختلفة في البيانات. 

sns.barplot(x = 'البلد'، y = 'عدد الحالات'، البيانات = dff.head(10))

يكون الناتج على النحو التالي.

رسم مخطط مبعثر

يمكنك فهم العلاقة بين القيم العددية باستخدام مخطط الانتشار. وهو يستخدم النقاط لتمثيل العلاقة بين المتغيرات. 

sns.scatterplot(x = "عدد الحالات"، y = "الوفيات",hue = "القارة",data = dff)

يكون الناتج على النحو التالي.

تجميع البيانات وفرزها

في الكود أدناه، سنقوم بتجميع البيانات حسب القارات وفرزها حسب عدد حالات كوفيد.

dfg = dff.groupby(by = 'Continent',as_index = False).agg({'Number of cases':sum,'Deaths':sum})
dfgg = dfg[1:]
df1 = dfgg.sort_values(by = 'Number of cases',ascending = False)
df1['Death_rate'] = (df1['Deaths']/df1['Number of cases'])*100
df1.sort_values(by = 'Death_rate',ascending = False)

يكون الناتج على النحو التالي.

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

sns.barplot(x = 'قارة'، y = 'معدل_الموت'، البيانات = df1.sort_values(by = 'Death_rate'، تصاعدي = False)))

يكون الناتج على النحو التالي.

يُظهر هذا المخطط العمودي أن معدل الوفيات هو الأعلى في أمريكا الجنوبية والأدنى في أستراليا من بين جميع البلدان. 

استيراد جدول نصي

قم بتثبيت texttable لإنشاء جدول ASCII بسيط. ثم قم باستيراده كـ tt.

!pip install texttable

استيراد texttable ك ttable

إنشاء كائن جدول نصي

عليك إنشاء كائن جدول نصي كما هو موضح أدناه. عليك إضافة صف فارغ في بداية الجدول للرؤوس ومحاذاة الأعمدة.

جدول = tt.Texttable() 

table.add_صفوف([(لا شيء، لا شيء، لا شيء، لا شيء، لا شيء)] + البيانات) table.set_cols_align(('c'، 'c'، 'c'، ' c'))  # يشير الحرف 'l' إلى اليسار والحرف ' c ' إلى الوسط والحرف ' r' إلى اليمين 
table.header((' البلد'عدد الحالات'، ' الوفيات'، ' القارة'))) 
  
طباعة(table.draw())

هنا، يمثل الإخراج بعض صفوف الجدول على النحو التالي.

الخاتمة

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