logo proxyscrape gelap

Mengikis Alamat Email Menggunakan Python - Panduan Utama 2024

Python, Mengikis, Dec-02-20225 menit baca
Memiliki daftar prospek email dapat membantu para pemasar untuk meningkatkan bisnis mereka. Dengan mengikis alamat email menggunakan skrip Python, para pebisnis dapat memiliki jangkauan yang lebih baik kepada audiens mereka. 
MailButler.io mengatakan bahwa ada hampir 4,3 miliar pengguna email di seluruh dunia yang diperkirakan akan mencapai 4,6 miliar pada tahun 2025. Statistik ini mengatakan bahwa sebagian besar orang mengandalkan platform email sebagai mode komunikasi resmi mereka. Artikel ini akan memandu Anda melalui proses scraping alamat email menggunakan bahasa python. 

Daftar Isi

Scraping Alamat Email Menggunakan Python

Salah satu cara termudah untuk mendapatkan klien yang baik adalah dengan memiliki sebanyak mungkin alamat email bisnis dan mengirimkan detail layanan Anda kepada mereka berkali-kali. Ada banyak alat pengikis yang ada di internet yang menyediakan layanan ini secara gratis, tetapi mereka memiliki batas data penarikan. Mereka juga menawarkan batas ekstraksi data tak terbatas, tetapi berbayar. Mengapa harus membayar mereka jika Anda bisa membuatnya dengan tangan Anda sendiri? Mari kita bahas langkah-langkah untuk membuat scraping tool yang berkualitas menggunakan Python. 

Artikel Terkait

Langkah-Langkah Untuk Mengikis Alamat Email

Meskipun ini akan menjadi contoh yang sangat sederhana untuk pemula, ini akan menjadi pengalaman belajar, terutama bagi mereka yang baru mengenal web scraping. Ini akan menjadi tutorial langkah demi langkah yang akan membantu Anda mendapatkan alamat email tanpa batas. Mari kita mulai dengan proses pembuatan web scraper cerdas kita.

Langkah 1: Mengimpor Modul

Kami akan menggunakan enam modul berikut ini untuk proyek kami.

impor kembali
permintaanimpor 
from urllib.parse import urlsplit
from collections import deque
from bs4 import BeautifulSoup
import pandas as pd
dari google.colab mengimpor berkas-berkas

Rincian modul yang diimpor diberikan di bawah ini:

  1. re adalah untuk pencocokan ekspresi reguler.
  2. permintaan untuk mengirim permintaan HTTP.
  3. urlsplit untuk membagi URL menjadi beberapa bagian komponen.
  4. deque adalah sebuah wadah yang berbentuk daftar yang digunakan untuk menambahkan dan memunculkan di kedua ujungnya.
  5. BeautifulSoup untuk menarik data dari file HTML dari halaman web yang berbeda.
  6. panda untuk memformat email ke dalam DataFrame dan untuk operasi lebih lanjut.

Langkah 2: Menginisialisasi Variabel

Pada langkah ini, kita akan menginisialisasi deque yang akan menyimpan URL yang dikikis, URL yang tidak dikikis, dan satu set penyimpanan email yang berhasil dikikis dari situs web.

# membaca url dari masukan
original_url = input("Masukkan url situs web: ") 
 
# untuk menyimpan url yang akan di-scraping
unscraped = deque([original_url])
 
# untuk menyimpan url yang sudah di-scraping
scraped = set()
 
# untuk menyimpan email yang diambil
email = set()  

Elemen duplikat tidak diperbolehkan dalam satu set, jadi semuanya unik.

Langkah 3: Memulai Proses Pengikisan

  1. Langkah pertama adalah membedakan antara URL yang diacak dan tidak diacak. Cara melakukannya adalah dengan memindahkan URL dari unscraped ke scraped.
while len(unscraped):
    # pindahkan unsraped_url ke setscraped_urls
    url = unscraped.popleft() # popleft(): Menghapus dan mengembalikan sebuah elemen dari sisi kiri deque
    scraped.add(url)
  1. Langkah selanjutnya adalah mengekstrak data dari berbagai bagian URL. Untuk tujuan ini, kita akan menggunakan urlsplit.
parts = urlsplit(url)

urlsplit() mengembalikan 5-tuple: (skema pengalamatan, lokasi jaringan, jalur, kueri, fragmen, pengenal).

Saya tidak dapat menampilkan contoh input dan output untuk urlsplit() karena alasan kerahasiaan, tetapi setelah Anda mencobanya, kode akan meminta Anda untuk memasukkan beberapa nilai (alamat situs web). Keluarannya akan menampilkan SplitResult(), dan di dalam SplitResult() akan ada lima atribut.

Ini akan memungkinkan kita untuk mendapatkan bagian dasar dan jalur untuk URL situs web.

base_url = "{0.scheme}://{0.netloc}".format(parts)
    if '/' in parts.path:
      path = url[:url.rfind('/')+1]
    else:
      path = url
  1. Ini adalah waktu untuk mengirim permintaan HTTP GET ke situs web.
mencoba:
        response = requests.get(url)
    except (requests.exceptions.MissingSchema, requests.exceptions.ConnectionError):
        # abaikan halaman dengan kesalahan dan lanjutkan dengan url berikutnya 
       lanjutkan
  1. Untuk mengekstrak alamat email, kita akan menggunakan percobaan biasa dan kemudian menambahkannya ke kumpulan email.
# Anda dapat mengedit ekspresi reguler sesuai kebutuhan Anda
    new_emails = set(re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.com", 
                  response.text, re.I)) # re.I: (abaikan huruf besar/kecil)
    emails.update(new_emails)
Ekspresi reguler sangat membantu ketika Anda ingin mengekstrak informasi yang Anda inginkan. Jika Anda tidak nyaman dengan mereka, Anda dapat melihat Python RegEx untuk lebih jelasnya.
  1. Langkah selanjutnya adalah menemukan semua URL yang tertaut ke situs web.
# membuat sup yang indah untuk dokumen html
   sup = BeautifulSoup(response.text, 'lxml')

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

for anchor in soup.find_all("a"): 
        
       # mengekstrak url tertaut dari jangkar
        if "href" in anchor.attrs:
          link = anchor.attrs["href"]
        else
          link = ''
        
       # menyelesaikan pranala relatif (dimulai dengan /)
        if link.startwith('/'):
            link = base_url + link
            
        elif not link.startswith('http'):
            link = path + link

Kemudian kita akan menemukan URL baru dan menambahkannya ke dalam antrean yang belum diacak jika tidak ada di dalam antrean yang sudah diacak maupun yang belum diacak.

Ketika Anda mencoba kode sendiri, Anda akan melihat bahwa tidak semua tautan dapat dikikis, jadi kita juga perlu mengecualikannya,

if not link.endswith(".gz" ):
         jika tidak tautan di unscraped dan bukan tautan di scraped:
              unscraped.append(link)

Langkah 4: Mengekspor Email ke file CSV

Untuk menganalisis hasil dengan cara yang lebih baik, kami akan mengekspor email ke file CSV.

df = pd.DataFrame(emails, columns=["Email"]) # ganti dengan nama kolom yang Anda inginkan
df.to_csv('email.csv', index=False)

Jika Anda menggunakan Google Colab, Anda dapat mengunduh file ke mesin lokal Anda dengan

dari google.colab mengimpor file
files.download("email.csv")

Seperti yang sudah dijelaskan, saya tidak bisa menampilkan alamat email yang sudah dihapus karena masalah kerahasiaan. 

[Penafian! Beberapa situs web tidak mengizinkan web scraping dan mereka memiliki bot yang sangat cerdas yang dapat memblokir IP Anda secara permanen, jadi lakukan scraping dengan risiko Anda sendiri].

Kode Lengkap

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

Proksi dalam Mengikis Alamat Email

Karena bisnis memerlukan banyak alamat email untuk membangun daftar kontak mereka, maka perlu untuk mengumpulkan data dari berbagai sumber. Proses pengumpulan data secara manual mungkin membosankan dan memakan waktu. Dalam hal ini, pengikis biasanya menggunakan proksi untuk mempercepat proses dan mem-bypass batasan yang ada. Proxyscrape menyediakan proksi dengan bandwidth tinggi yang mampu mengikis data tanpa batas dan bekerja 24/7 untuk memastikan fungsionalitas tanpa gangguan. Tingkat anonimitas proksi mereka cukup tinggi untuk menyembunyikan identitas pengikis. 

Pertanyaan yang Sering Diajukan

1. Mengapa perlu mengikis alamat email?

Membuat daftar kontak potensial dengan alamat email yang memenuhi syarat akan memudahkan proses menjangkau audiens target. Karena sebagian besar orang menggunakan email sebagai media komunikasi mereka, maka akan lebih mudah untuk menjangkau mereka melalui alamat email. 

2. Apakah kami memerlukan proxy untuk melakukan scraping alamat email?

Saat mengikis alamat email dari berbagai sumber, pengikis mungkin menghadapi beberapa tantangan seperti blokir IP atau hambatan geografis. Dalam kasus ini, proxy akan menyembunyikan alamat pengguna dengan alamat proxy dan menghapus blokir dalam mengakses situs web yang diblokir. 

3. Apakah legal untuk mengikis alamat email? 

Mengumpulkan data yang tersedia untuk umum selalu legal. Jadi, scraper harus memastikan data yang mereka kumpulkan tersedia di domain publik. Jika tidak, mereka dapat mengumpulkan data dengan izin terlebih dahulu untuk menjaga legalitas dalam melakukan scraping. 

Membungkus

Pada artikel ini, kami telah mengeksplorasi satu lagi keajaiban web scraping dengan menunjukkan contoh praktis untuk mengais alamat email. Kami telah mencoba pendekatan yang paling cerdas dengan membuat perayap web kami menggunakan Python dan ini adalah pustaka yang paling mudah namun paling kuat yang disebut BeautfulSoup. Web Scraping dapat sangat membantu jika dilakukan dengan benar dengan mempertimbangkan kebutuhan Anda. Meskipun kami telah menulis kode yang sangat sederhana untuk mengais alamat email, kode ini benar-benar gratis, dan juga, Anda tidak perlu bergantung pada layanan lain untuk ini. Saya mencoba yang terbaik untuk menyederhanakan kode sebanyak mungkin dan juga menambahkan ruang untuk kustomisasi sehingga Anda dapat mengoptimalkannya sesuai dengan kebutuhan Anda sendiri. 

Jika Anda mencari layanan proxy untuk digunakan selama proyek penggalian Anda, jangan lupa untuk melihat ProxyScrape proxy residensial dan premium