yardım etmek mi istiyorsunuz? İşte seçenekleriniz:","Crunchbase","Hakkımızda","Muhteşem destek için herkese teşekkürler!","Hızlı Bağlantılar","Ortaklık programı","ProxyScrape premium deneme","Çevrimiçi Proxy Denetleyicisi","Proxy türleri","Vekil ülkeler","Proxy kullanım durumları","Önemli","Çerez politikası","Sorumluluk Reddi","Gizlilik Politikası","Şartlar ve koşullar","Sosyal Medya","Facebook","LinkedIn","Twitter","Quora","Telgraf","Discord"," © Telif Hakkı 2024 - Thib BV | Brugstraat 18 | 2812 Mechelen | Belçika | KDV BE 0749 716 760"]}
Owning a list of email prospects can help marketers to scale up their businesses. By scraping email addresses using Python scripts, business people can have better outreach to their audience. MailButler.io says that there are nearly 4.3 billion email users globally which is estimated to reach 4.6 billion by 2025. These statistics say that people
E-posta potansiyel müşterilerinin bir listesine sahip olmak, pazarlamacıların işlerini büyütmelerine yardımcı olabilir. İş insanları, Python komut dosyalarını kullanarak e-posta adreslerini kazıyarak hedef kitlelerine daha iyi ulaşabilirler.
MailButler.io, dünya genelinde yaklaşık 4,3 milyar e-posta kullanıcısı olduğunu ve bu rakamın 2025 yılına kadar 4,6 milyara ulaşacağının tahmin edildiğini söylüyor. Bu istatistikler, insanların resmi iletişim biçimleri için çoğunlukla e-posta platformuna güvendiklerini söylüyor. Bu makale, python dilini kullanarak e-posta adreslerini kazıma işlemi boyunca size rehberlik edecektir.
İyi bir müşteri kitlesine sahip olmanın en kolay yollarından biri, mümkün olduğunca çok sayıda iş e-posta adresine sahip olmak ve onlara hizmet detaylarınızı tekrar tekrar göndermektir. İnternette bu hizmetleri ücretsiz olarak sağlayan birçok kazıma aracı vardır, ancak bunların veri çekme limitleri vardır. Ayrıca sınırsız veri çekme limiti sunarlar, ancak ücretlidirler. Kendi ellerinizle bir tane oluşturabilecekken neden onlara ödeme yapasınız ki? Python kullanarak kaliteli bir kazıma aracı oluşturmanın adımlarını tartışalım.
İlgili Makaleler
En İyi Python Web Kazıma araçları
Python'da Proxy Nasıl Oluşturulur
Yeni başlayanlar için çok basit bir örnek olsa da, özellikle web kazıma konusunda yeni olanlar için bir öğrenme deneyimi olacaktır. Bu, herhangi bir sınırlama olmaksızın e-posta adreslerini almanıza yardımcı olacak adım adım bir öğretici olacaktır. Akıllı web kazıyıcımızın yapım süreci ile başlayalım.
Projemiz için aşağıdaki altı modülü kullanacağız.
yeniden içe aktar
i̇thalat talepleri̇
from urllib.parse import urlsplit
from collections import deque
from bs4 import BeautifulSoup
import pandas as pd
from google.colab import dosyalar
İthal edilen modüllerin detayları aşağıda verilmiştir:
Bu adımda, kazınmış URL'leri, kazınmamış URL'leri ve web sitelerinden başarıyla kazınmış bir dizi kaydedilmiş e-postayı kaydedecek bir deque başlatacağız.
# url'yi girdiden oku
original_url = input("Web sitesi URL'sini girin: ")
# kazınacak URL'leri kaydetmek için
unscraped = deque([original_url])
# kazınmış URL'leri kaydetmek için
kazınmış = set()
# getirilen e-postaları kaydetmek için
emails = set()
Bir kümede yinelenen öğelere izin verilmez, bu nedenle hepsi benzersizdir.
while len(unscraped):
# move unsraped_url to scraped_urls set
url = unscraped.popleft() # popleft(): Deque ' nin sol tarafından bir öğeyi kaldırın ve döndürün
scraped.add(url)
parts = urlsplit(url)
urlsplit() 5-tuple döndürür: (adresleme şeması, ağ konumu, yol, sorgu, parça, tanımlayıcı).
Gizli nedenlerden dolayı urlsplit() için örnek giriş ve çıkışları gösteremiyorum, ancak bir kez denediğinizde, kod sizden bir değer (web sitesi adresi) girmenizi isteyecektir. Çıktı SplitResult()'ı gösterecek ve SplitResult()'ın içinde beş özellik olacaktır.
Bu, web sitesi URL'si için taban ve yol kısmını almamızı sağlayacaktır.
base_url = "{0.scheme}://{0.netloc}".format(parts)
if '/' in parts.path:
path = url[:url.rfind('/')+1]
else:
path = url
try:
response = requests.get(url)
except (requests.exceptions.MissingSchema, requests.exceptions.ConnectionError):
# hata içeren sayfaları yoksay ve sonraki url ile devam et
devam et
# Düzenli ifadeyi ihtiyacınıza göre düzenleyebilirsiniz
new_emails = set(re.findall(r"[a-z0-9\.\-+_]+@[a-z0-9\.\-+_]+\.com",
yanıt.metin, re.I)) # re.I: (durumu göz ardı et)
emails.update(new_emails)
Düzenli ifadeler, kendi seçtiğiniz bilgileri çıkarmak istediğinizde çok yardımcı olur. Eğer bu konuda rahat değilseniz, daha fazla ayrıntı için Python RegEx 'e göz atabilirsiniz.
# html belgesi için güzel bir çorba oluşturun
soup = 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"):
# bağlantılı url'yi anchor'dan çıkar
if "href" in anchor.attrs:
link = anchor.attrs["href"]
else:
link = ''
# göreli bağlantıları çözümleyin (/ ile başlayan)
if link.startswith('/'):
link = base_url + link
elif not link.startswith('http'):
link = path + link
Ardından yeni URL'leri bulacağız ve kazınmış veya kazınmamış kuyruğunda değillerse bunları kazınmamış kuyruğuna ekleyeceğiz.
Kodu kendi başınıza denediğinizde, tüm bağlantıların kazınamadığını fark edeceksiniz, bu yüzden onları da hariç tutmamız gerekiyor,
if not link.endswith(".gz" ):
if not link in unscraped and not link in scraped:
unscraped.append(link)
Sonuçları daha iyi bir şekilde analiz etmek için e-postaları CSV dosyasına aktaracağız.
df = pd.DataFrame(emails, columns=["Email"]) # tercih ettiğiniz sütun adıyla değiştirin
df.to_csv('email.csv', index=False)
Google Colab kullanıyorsanız, dosyayı yerel makinenize şu şekilde indirebilirsiniz
from google.colab import dosyalar
files.download("email.csv")
Daha önce de açıkladığım gibi, gizlilik sorunları nedeniyle hurdaya çıkarılan e-posta adreslerini gösteremiyorum.
[Yasal Uyarı! Bazı web siteleri web kazıma yapmaya izin vermez ve IP'nizi kalıcı olarak engelleyebilecek çok akıllı botlara sahiptir, bu nedenle riski kendiniz alın].
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
İşletmeler kişi listelerini oluşturmak için çok sayıda e-posta adresine ihtiyaç duyduklarından, birden fazla kaynaktan veri toplamak gerekir. Manuel veri toplama süreci sıkıcı ve zaman alıcı olabilir. Bu durumda, kazıyıcılar genellikle süreci hızlandırmak ve önlerine çıkan kısıtlamaları atlamak için proxy'leri tercih ederler. Proxyscrape , sınırsız veri kazıyabilen ve kesintisiz işlevsellik sağlamak için 7/24 çalışan yüksek bant genişliğine sahip proxy'ler sağlar. Proxy anonimlik seviyeleri, kazıyıcıların kimliğini gizleyecek kadar yüksektir.
1. E-posta adreslerini kazımak neden gereklidir?
Nitelikli e-posta adreslerinden oluşan bir potansiyel iletişim listesi oluşturmak, hedef kitleye ulaşma sürecini kolaylaştıracaktır. Çoğu insan iletişim aracı olarak e-postayı kullandığından, e-posta adresleri aracılığıyla onlara ulaşmak oldukça kolaydır.
2. E-posta adreslerini kazımak için proxy'lere ihtiyacımız var mı?
E-posta adreslerini birden fazla kaynaktan kazırken, kazıyıcılar IP blokları veya coğrafi engeller gibi bazı zorluklarla karşılaşabilir. Bu durumda, proxy'ler kullanıcıların adreslerini proxy adresi ile gizleyecek ve engellenen web sitelerine erişimdeki engelleri kaldıracaktır.
3. E-posta adreslerini kazımak yasal mı?
Kamuya açık verileri toplamak her zaman yasaldır. Bu nedenle, kazıyıcılar topladıkları verilerin kamu malı olduğundan emin olmalıdır. Değilse, kazıma işleminde yasallığı korumak için önceden izin alarak veri toplayabilirler.
Bu makalede, e-posta adreslerini kazımanın pratik bir örneğini göstererek web kazımanın bir harikasını daha keşfettik. Web tarayıcımızı Python kullanarak yaparak en akıllı yaklaşımı denedik ve BeautfulSoup adlı en kolay ve yine de en güçlü kütüphane. Web Kazıma, gereksinimleriniz göz önünde bulundurularak doğru şekilde yapılırsa çok yardımcı olabilir. E-posta adreslerini kazımak için çok basit bir kod yazmış olsak da, tamamen ücretsizdir ve bunun için başka hizmetlere güvenmenize gerek yoktur. Kodu mümkün olduğunca basitleştirmek için elimden gelenin en iyisini yapmaya çalıştım ve ayrıca kendi gereksinimlerinize göre optimize etmeniz için özelleştirme için yer ekledim.
Kazıma projeleriniz sırasında kullanmak için proxy hizmetleri arıyorsanız, ProxyScrape konut ve premium proxy'lere bakmayı unutmayın.