شعار proxyscrape داكن

كشط الويب للمقالات الإخبارية باستخدام Python- أفضل طريقة في عام 2024

بايثون, كانون الثاني/يناير-04-20235 دقائق للقراءة

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

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

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

مقدمة على مستوى السطح لصفحات الويب و HTML. كشط الويب باستخدام Python والمكتبة الشهيرة المسماة BeautifulSoup.

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

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

مقدمة على مستوى السطح لصفحات الويب و HTML

إذا أردنا سحب معلومات مهمة من أي موقع إلكتروني أو صفحة ويب، فمن المهم أن نعرف كيف يعمل ذلك الموقع الإلكتروني. عندما ننتقل إلى عنوان URL محدد باستخدام أي متصفح ويب (كروم، فايرفوكس، موزيلا، إلخ)، فإن صفحة الويب تلك عبارة عن مزيج من ثلاث تقنيات,

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

CSS (أوراق الأنماط المتتالية): تُستخدم لتصميم صفحات الويب. تتعامل CSS مع جميع التصميمات المرئية التي تراها على موقع ويب معين.

جافا سكريبت: JavaScript هي العقل المدبر لصفحة الويب. تتعامل JavaScript مع جميع المعالجات المنطقية ووظائف صفحة الويب. وبالتالي فهي تسمح بجعل المحتوى والأسلوب تفاعلياً.

تسمح لنا لغات البرمجة الثلاث هذه بإنشاء جوانب صفحة ويب ومعالجتها.

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

كشط المقالات الإخبارية على الويب باستخدام BeautifulSoup في Python

لدى Python العديد من الحزم التي تسمح لنا بكشط المعلومات من صفحة ويب. سنواصل مع BeautifulSoup لأنها واحدة من أشهر مكتبات Python الأكثر شهرة وسهلة الاستخدام لكشط الويب.

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

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

نبدأ من الأساسيات. لتثبيت حزمة المكتبة، اكتب الأمر التالي في توزيع بايثون الخاص بك,

! pip install beautifulsoup4

سوف نستخدم أيضًا "وحدة الطلبات" لأنها تزود بيوتيفوليوتيفول سوب بشفرة HTML لأي صفحة. لتثبيته، اكتب الأمر التالي في توزيع Python الخاص بك,

! طلبات التثبيت

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

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

get_text(): بمجرد تحديد موقع عنصر معين، يسمح لنا هذا الأمر باستخراج النص الداخلي.

للتنقل في كود HTML الخاص بصفحة الويب وتحديد موقع العناصر التي نريد كشطها، يمكننا استخدام خيار "فحص العنصر" بالنقر بزر الماوس الأيمن على الصفحة أو ببساطة الضغط على Ctrl+F. سيتيح لك ذلك رؤية الشيفرة المصدرية لصفحة الويب.

بمجرد أن نحدد العناصر التي تهمنا، سنحصل على كود HTML مع وحدة الطلبات، ولاستخراج تلك العناصر، سنستخدم الحساء الجميل.

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

إذا فحصنا كود HTML الخاص بالمقالات الإخبارية، سنرى أن المقالة في الصفحة الأولى لها بنية مثل هذه

The title has <h2> element with itemprop=”headline” and class=”articulo-titulo” attributes. It has an href attribute containing the text. So we will now extract the text using the following commands:

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

بمجرد أن نحصل على محتوى HTML باستخدام وحدة الطلبات، يمكننا حفظه في متغير صفحة الغلاف:

# الطلبات
r1 = الطلبات.get(url)
r1.status_رمز_الحالة
 
# سنقوم بحفظ محتوى صفحة الغلاف في صفحة الغلاف
صفحة الغلاف = r1.content

بعد ذلك، سنقوم بتعريف متغير الحساء,

# إنشاء الحساء
الحساء1 = حساء جميل(صفحة الغلاف، 'html5lib')

في السطر التالي من الشيفرة، سنحدد موقع العناصر التي نبحث عنها,

# تحديد الأخبار
Coverpage_news = soup1.find_all('h2', class_='articulo-titulo')

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

لكي نتمكن من استخراج النص، سنستخدم الأمر التالي:

صفحة الغلاف_الأخبار[4].get_text()

إذا أردنا الوصول إلى قيمة سمة (في حالتنا هذه، الرابط)، يمكننا استخدام الأمر التالي,

coverpage_news[4]['href']

سيسمح لنا ذلك بالحصول على الرابط بنص عادي.

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

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

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

عدد_من_المقالات = 5
# قوائم فارغة للمحتوى والروابط والعناوين
المحتويات_الإخبارية = []
list_links = []
قائمة_العناوين = []
 
ل n في np.arange(0, number_of_articles):
    
   # المقالات الإخبارية فقط (هناك أيضًا ألبومات وأشياء أخرى)
   إذا لم يكن "inenglish" في coverpage_news[n].find('a')['href']:  
       متابعة
    
   # الحصول على رابط المقال
   الرابط = coverpage_news[n].find('a')['href']
    list_links.append(الرابط)
    
   # الحصول على العنوان
    العنوان = coverpage_news[n].find('a').get_text()
    list_tititles.append(title)
    
   # قراءة المحتوى (مقسّم إلى فقرات)
    مقالة = طلبات.get(رابط)
    المادة_المحتوى = article_content = article.content
    soup_article = BeautifulSoup(article_content, 'html5lib')
    الجسم = soup_article.find_all('div', class_='articulo-cuerpo')
    x = body[0].find_all('p')
    
   # توحيد الفقرات
    قائمة_الفقرات = []
   بالنسبة إلى p في np.arange(0, len(x)):
        فقرة = x[p].get_text()
        list_paragraphs.append(فقرة)
        نهائي_مقالة = "".join(list_paragraphs)
        
    news_contents.append(final_article)

دعونا نضع المقالات المستخرجة في ما يلي:

  • مجموعة البيانات التي ستدخل النماذج (df_features).
  • مجموعة بيانات مع العنوان والرابط (df_show_info).
# df_features
df_features = pd.DataFrame(
     {'Article Content': news_contents 
    })
 
# df_show_info
df_show_info = pd.DataFrame(
    {'Article Title': list_titles,
     'Article Link': list_links})
df_features
df_show_info

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

def get_news_elpais():
    
    # url definition
    url = "https://elpais.com/elpais/inenglish.html"
    
    # Request
    r1 = requests.get(url)
    r1.status_code
 
    # We'll save in coverpage the cover page content
    coverpage = r1.content
 
    # Soup creation
    soup1 = BeautifulSoup(coverpage, 'html5lib')
 
    # News identification
    coverpage_news = soup1.find_all('h2', class_='articulo-titulo')
    len(coverpage_news)
    
    number_of_articles = 5
 
    # Empty lists for content, links and titles
    news_contents = []
    list_links = []
    list_titles = []
 
    for n in np.arange(0, number_of_articles):
 
        # only news articles (there are also albums and other things)
        if "inenglish" not in coverpage_news[n].find('a')['href']:  
            continue
 
        # Getting the link of the article
        link = coverpage_news[n].find('a')['href']
        list_links.append(link)
 
        # Getting the title
        title = coverpage_news[n].find('a').get_text()
        list_titles.append(title)
 
        # Reading the content (it is divided in paragraphs)
        article = requests.get(link)
        article_content = article.content
        soup_article = BeautifulSoup(article_content, 'html5lib')
        body = soup_article.find_all('div', class_='articulo-cuerpo')
        x = body[0].find_all('p')
 
        # Unifying the paragraphs
        list_paragraphs = []
        for p in np.arange(0, len(x)):
            paragraph = x[p].get_text()
            list_paragraphs.append(paragraph)
            final_article = " ".join(list_paragraphs)
 
        news_contents.append(final_article)
 
    # df_features
    df_features = pd.DataFrame(
         {'Content': news_contents 
        })
 
    # df_show_info
    df_show_info = pd.DataFrame(
        {'Article Title': list_titles,
         'Article Link': list_links,
         'Newspaper': 'El Pais English'})
    
    return (df_features, df_show_info)

ما هو أفضل وكيل لقشط الويب للمقالات الإخبارية باستخدام بايثون؟

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

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

يحتوي وكيل مركز البيانات المخصص على العديد من الميزات، مثل النطاق الترددي غير المحدود والاتصالات المتزامنة، ووكلاء HTTP المخصصين لسهولة الاتصال، ومصادقة IP لمزيد من الأمان. مع وقت تشغيل بنسبة 99.9%، يمكنك أن تطمئن إلى أن مركز البيانات المخصص سيعمل دائمًا خلال أي جلسة. وأخيراً وليس آخراً، يقدم ProxyScrape خدمة عملاء ممتازة وسيساعدك على حل مشكلتك خلال 24-48 ساعة عمل. 

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

الميزة الأخرى في البروكسي السكني ProxyScrapeهي خاصية البروكسي الدوار. يساعدك البروكسي الدوّار على تجنب الحظر الدائم على حسابك لأن البروكسي السكني يغير عنوان IP الخاص بك ديناميكيًا، مما يجعل من الصعب على الخادم المستهدف التحقق مما إذا كنت تستخدم وكيلًا أم لا. 

وبصرف النظر عن ذلك، فإن الميزات الأخرى للوكيل السكني هي: نطاق ترددي غير محدود، إلى جانب الاتصال المتزامن، وخوادم بروكسي HTTP/ث مخصصة، وخوادم بروكسي في أي وقت بسبب وجود أكثر من 7 ملايين بروكسي في تجمع البروكسي، ومصادقة اسم المستخدم وكلمة المرور لمزيد من الأمان، وأخيرًا وليس آخرًا، القدرة على تغيير الخادم القطري. يمكنك تحديد الخادم الذي تريده عن طريق إلحاق رمز البلد بمصادقة اسم المستخدم. 

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

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

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

قراءات مقترحة:

كشط تعليقات يوتيوب - 5 خطوات بسيطةأفضل 8 أدوات لكشط الويب من بايثون في عام 2023

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

1. ما هي أفضل طريقة لكشط المقالات الإخبارية باستخدام بايثون؟
تسمى مكتبة بيثون "BeautifulSoup" ويمكنها كشط البيانات تلقائيًا من أي مقالة إخبارية. المتطلب الوحيد هو معرفة أساسية ب HTML لتحديد موقع علامة HTML من شفرة مصدر الصفحة التي تحتوي على البيانات التي يجب كشطها.
2. هل يجوز كشط المقالات الإخبارية من الموقع الإلكتروني؟
الجواب هو أن ذلك يعتمد على شروط وأحكام الموقع الإلكتروني. ولكن يمكن كشط معظم المقالات الإخبارية نظرًا لأن جميع المعلومات متاحة للجمهور عن قصد. يمكن كشط جميع البيانات العامة طالما أن طريقة الكشط لا تضر بالبيانات أو مالك الموقع الإلكتروني.
3. كيف يمكنني كشط أخبار جوجل باستخدام بايثون؟
يمكنك كشط أخبار جوجل أو أي مقالات إخبارية باستخدام بايثون بمساعدة مكتبة بايثون المسماة "BeautifulSoup". قم بتثبيت المكتبة ووكيل سكني موثوق به لمنع حظر بروتوكول الإنترنت من الخادم المستهدف.

الخاتمة

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

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

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