داكن proxyscrape شعار

كشط عناوين البريد الإلكتروني باستخدام بايثون - الدليل النهائي 2024

بايثون ، كشط ، ديسمبر 02-20225 دقائق للقراءة
يمكن أن يساعد امتلاك قائمة بالعملاء المحتملين للبريد الإلكتروني المسوقين على توسيع نطاق أعمالهم. من خلال كشط عناوين البريد الإلكتروني باستخدام نصوص Python النصية ، يمكن لرجال الأعمال الوصول بشكل أفضل إلى جمهورهم. 
يقول MailButler.io أن هناك ما يقرب من 4.3 مليار مستخدم للبريد الإلكتروني على مستوى العالم ويقدر أن يصل إلى 4.6 مليار بحلول عام 2025. تقول هذه الإحصائيات أن الأشخاص يعتمدون في الغالب على منصة البريد الإلكتروني لطريقة الاتصال الرسمية الخاصة بهم. ستوجهك هذه المقالة خلال عملية تجريف عناوين البريد الإلكتروني باستخدام لغة python. 

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

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

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

مقالات ذات صلة

خطوات لكشط عناوين البريد الإلكتروني

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

الخطوة 1: استيراد الوحدات النمطية

سنستخدم الوحدات الست التالية لمشروعنا.

استيراد إعادة
طلبات الاستيراد
من urllib.parse استيراد urlsplit
من مجموعات استيراد deque
من bs4 استيراد شوربة جميلة
استيراد الباندا ك PD
من ملفات استيراد google.colab 

فيما يلي تفاصيل الوحدات المستوردة:

  1. RE لمطابقة التعبير العادي.
  2. طلبات إرسال طلبات HTTP.
  3. urlsplit لتقسيم عناوين URL إلى أجزاء مكونة.
  4. deque عبارة عن حاوية في شكل قائمة تستخدم للإلحاق والظهور على كلا الطرفين.
  5. BeautifulSoup لسحب البيانات من ملفات HTML لصفحات الويب المختلفة.
  6. الباندا لتنسيق البريد الإلكتروني في DataFrame ولمزيد من العمليات.

الخطوة 2: تهيئة المتغيرات

في هذه الخطوة ، سنقوم بتهيئة deque الذي سيحفظ عناوين URL المسروقة وعناوين URL غير المسروقة ومجموعة من رسائل البريد الإلكتروني المحفوظة التي تم كشطها بنجاح من مواقع الويب.

# قراءة عنوان url من الإدخالoriginal_url = الإدخال ("أدخل عنوان url لموقع الويب:") 
 
# لحفظ عناوين url المراد كشطها بدون كشط = deque ([original_url])
 
# لحفظ عناوين url المسروقة التي تم كشطها = set ()
 
# لحفظ رسائل البريد الإلكتروني التي تم جلبها = set ()  

لا يسمح بالعناصر المكررة في مجموعة ، لذا فهي كلها فريدة.

الخطوة 3: بدء عملية الكشط

  1. الخطوة الأولى هي التمييز بين عناوين URL المسروقة وغير المسروقة. طريقة القيام بذلك هي نقل عنوان URL من غير مسروق إلى كشط.
بينما لين (غير كشط):
    # نقل unsraped_url إلى مجموعة scraped_urls
    url = unscraped.popleft() # popleft(): قم بإزالة عنصر وإعادته من الجانب الأيسر من deque
    كشط. إضافة (عنوان URL)
  1. الخطوة التالية هي استخراج البيانات من أجزاء مختلفة من عنوان URL. لهذا الغرض ، سوف نستخدم urlsplit.
الأجزاء = urlsplit (عنوان url)

ترجع urlsplit() 5 مجموعات: (مخطط عنونة ، موقع شبكة ، مسار ، استعلام ، جزء ، معرف).

لا يمكنني عرض عينة من المدخلات والمخرجات ل urlsplit() لأسباب سرية ، ولكن بمجرد المحاولة ، سيطلب منك الرمز إدخال بعض القيمة (عنوان موقع الويب). سيعرض الإخراج SplitResult() ، وداخل SplitResult() سيكون هناك خمس سمات.

سيسمح لنا ذلك بالحصول على الجزء الأساسي والمسار لعنوان URL لموقع الويب.

base_url = "{0.scheme}://{0.netloc}".format(parts)
    if '/' in parts.path:
      path = url[:url.rfind('/')+1]
    else:
      path = url
  1. هذا هو الوقت المناسب لإرسال طلب HTTP GET إلى موقع الويب.
حاول:
        الاستجابة = الطلبات. الحصول على (رابط)
    باستثناء (requests.exceptions.MissingSchema, requests.exceptions.ConnectionError):
        # تجاهل الصفحات التي تحتوي على أخطاء والمتابعة  مع عنوان URL التالي
        استمر
  1. لاستخراج عناوين البريد الإلكتروني ، سنستخدم التجربة العادية ثم نضيفها إلى مجموعة البريد الإلكتروني.
# يمكنك تحرير التعبير العادي حسب متطلباتك
    new_emails = set(re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.com", 
                  الاستجابة.النص ، إعادة. I)) # إعادة. I: (تجاهل الحالة)
    تحديث البريد الإلكتروني(new_emails)
التعبيرات العادية هي مساعدة كبيرة عندما تريد استخراج المعلومات التي تختارها. إذا لم تكن مرتاحا لهم ، فيمكنك إلقاء نظرة على Python RegEx لمزيد من التفاصيل.
  1. الخطوة التالية هي العثور على جميع عناوين URL المرتبطة بموقع الويب.
# إنشاء حساء جميل لحساء مستند html = BeautifulSoup (response.text ، 'lxml')

The <a href=””> tag indicates a hyperlink that can be used to find all the linked URLs in the document.

للمرساة  في soup.find_all ("أ"): 
        
# استخراج عنوان URL المرتبط من المرساة
        إذا كان "href" في anchor.attrs:
          link = anchor.attrs ["href"] 
        اخر:
          الرابط = ''
        
# حل الروابط النسبية (بدءا من /)
        إذا كان link.startswith('/'):
            الرابط = base_url + الرابط
            
Elif not link.startswith('http'):
            الارتباط = المسار + الارتباط

ثم سنجد عناوين URL الجديدة ونضيفها في قائمة الانتظار غير المكشطة إذا لم تكن في الكشط ولا في غير الكشط.

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

إذا لم يكن link.endswith (".gz"):
          إذا لم يكن الارتباط غير مكشط وليس  الارتباط في كشط:
              unscraped.append(link)

الخطوة 4: تصدير رسائل البريد الإلكتروني إلى ملف CSV

لتحليل النتائج بطريقة أفضل ، سنقوم بتصدير رسائل البريد الإلكتروني إلى ملف CSV.

df = PD. DataFrame (رسائل البريد الإلكتروني ، الأعمدة = ["البريد الإلكتروني"]) # استبدل باسم العمود  الذي تفضله
df.to_csv ('email.csvالفهرس = خطأ)

إذا كنت تستخدم Google Colab ، فيمكنك تنزيل الملف على جهازك المحلي عن طريق

من google.colab استيراد ملفات
files.download("email.csv")

كما أوضحنا بالفعل ، لا يمكنني إظهار عناوين البريد الإلكتروني التي تم إلغاؤها بسبب مشكلات السرية. 

[تنويه! لا تسمح بعض مواقع الويب بإجراء تجريف الويب ولديها روبوتات ذكية جدا يمكنها حظر عنوان IP الخاص بك بشكل دائم ، لذا قم بكشط على مسؤوليتك الخاصة.]

الكود الكامل

import re
import requests
from urllib.parse import urlsplit
from collections import deque
from bs4 import BeautifulSoup
import pandas as pd
from google.colab import files
 
# read url from input
original_url = input("Enter the website url: ") 
 
# to save urls to be scraped
unscraped = deque([original_url])
 
# to save scraped urls
scraped = set()
 
# to save fetched emails
emails = set()  
 
while len(unscraped):
    url = unscraped.popleft()  
    scraped.add(url)
 
    parts = urlsplit(url)
        
    base_url = "{0.scheme}://{0.netloc}".format(parts)
    if '/' in parts.path:
      path = url[:url.rfind('/')+1]
    else:
      path = url
 
    print("Crawling URL %s" % url)
    try:
        response = requests.get(url)
    except (requests.exceptions.MissingSchema, requests.exceptions.ConnectionError):
        continue
 
    new_emails = set(re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.com", response.text, re.I))
    emails.update(new_emails) 
 
    soup = BeautifulSoup(response.text, 'lxml')
 
    for anchor in soup.find_all("a"):
      if "href" in anchor.attrs:
        link = anchor.attrs["href"]
      else:
        link = ''
 
        if link.startswith('/'):
            link = base_url + link
        
        elif not link.startswith('http'):
            link = path + link

الوكلاء في تجريف عناوين البريد الإلكتروني

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

أسئلة مكررة

1. لماذا من الضروري كشط عناوين البريد الإلكتروني؟

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

2. هل نحتاج إلى وكلاء لكشط عناوين البريد الإلكتروني؟

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

3. هل من القانوني كشط عناوين البريد الإلكتروني؟ 

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

في المخص:

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

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