Scrape Emails von Websites mit Python
Das Scrapen öffentlich zugänglicher E-Mail-Adressen von Websites mit Python kann den Verkauf erheblich verbessern, indem eine Möglichkeit geboten wird, potenzielle Kund*inneninformationen einfach zu sammeln.
Diese Technik ermöglicht es Unternehmen, eine größere Zielgruppe zu erreichen und ihre Marketingmaßnahmen zu personalisieren, was zu effektiverer Kommunikation und höheren Konversionsraten führt. Es ist jedoch wichtig, beim Scrapen nach E-Mail-Adressen stets die Nutzungsbedingungen der Website und Datenschutzgesetze zu respektieren.
In diesem Blog zeigen wir, wie Python genutzt werden kann, um den Inhalt einer Website nach E-Mail-Adressen zu durchsuchen.
Anforderungen:
- Sie müssen Python installiert haben.
- Installieren Sie die Pakete requests und beautifulsoup mit dem Befehl: pip install requests bs4.
Gliederung:
-
Wie man HTTP-Anfragen mit Python sendet
-
Wie man den Inhalt des HTML-Bodys einer Seite mit Beautifulsoup erhält
-
Wie man eine Liste von E-Mail-Adressen mit Regex erhält
Wie man HTTP-Anfragen mit Python sendet
Das Requests-Paket ist das am häufigsten verwendete Paket, wenn es um Python und das Senden von HTTP-Anfragen geht. Nach der Installation können wir die get-Methode verwenden und den Inhalt der angeforderten Seite wie im folgenden Code gezeigt abrufen.
import requests
def main(url):
response = requests.get(url)
if response.status_code == 200:
text = response.text
print(text)
main('https://minelead.io')
Code-Erklärung:
Um das Requests-Paket zu nutzen, müssen wir es importieren, und das haben wir in der ersten Zeile getan.
Das Requests-Paket hat mehrere Methoden, wir sind an der Methode get interessiert. Wir haben sie aufgerufen und die URL der Website übergeben, die wir scrapen möchten.
Unsere Antwort enthält viele Attribute. Wir haben überprüft, ob der Statuscode 200 ist, und dann den Text ausgegeben.
Wie man den Inhalt des HTML-Bodys einer Seite mit Beautifulsoup erhält
Beautiful Soup ist eine Python-Bibliothek, die für Web-Scraping verwendet wird. Sie ermöglicht es, HTML- und XML-Dokumente zu analysieren, durch den Analysenbaum zu navigieren und den Analysenbaum zu durchsuchen und zu modifizieren.
Mit Beautiful Soup können Sie leicht Daten von Websites extrahieren, wie Texte, Links und Bilder, und diese Daten für eine Vielzahl von Zwecken verwenden, wie z. B. Datenanalyse, maschinelles Lernen oder die Erstellung eines Web-Scrapers. Darüber hinaus kann Beautiful Soup auch fehlerhaftes HTML und XML verarbeiten, was es zu einem robusten und praktischen Werkzeug für das Web-Scraping macht.
Wir werden es jetzt verwenden, um nur den Body der zuvor abgerufenen Webseite zu erhalten:
import requests
from bs4 import BeautifulSoup as bs
def main(url):
response = requests.get(url)
if response.status_code == 200:
text = response.text
soup = bs(text,'html.parser').body
print(soup)
main('https://minelead.io')
Code-Erklärung:
Wir haben dort weitergemacht, wo wir im ersten Schritt aufgehört haben, und nur den Body-Inhalt aus dem gesamten Inhalt der Seite herausgefiltert, einschließlich der Head- und Meta-Daten, an denen wir kein Interesse haben.
Wie oben erwähnt, hat Beautiful Soup mehrere Parser, aber wir haben den Standard-Parser verwendet, der html.parser ist.
Wie man eine Liste von E-Mail-Adressen mit Regex erhält
Bis jetzt haben wir nur die Daten vorbereitet, die möglicherweise E-Mail-Adressen enthalten. Um diese Adressen abzurufen, werden wir Regex verwenden. Aber was genau ist Regex?
Regex, kurz für reguläre Ausdrücke, ist ein leistungsfähiges Werkzeug zum Suchen, Abgleichen und Manipulieren von Text. Es handelt sich um eine Sequenz von Zeichen, die ein Suchmuster definiert.
Diese Suchmuster werden verwendet, um Text aus anderen Zeichenketten oder Zeichenketten-Sets abzugleichen und zu extrahieren.
Regex wird in verschiedenen Kontexten verwendet, wie zum Beispiel:
Um Regex effizient zu nutzen, müssen wir einen genauen Regex-Ausdruck übergeben. Wenn wir beispielsweise alle E-Mails abgleichen möchten, werden wir wie folgt vorgehen:
import requests
from bs4 import BeautifulSoup as bs
import re
def main(url):
response = requests.get(url)
if response.status_code == 200:
text = response.text
soup = str(bs(text,'html.parser').body)
emails = re.findall(r'[\w.+-]+@[\w-]+\.[\w.-]+',soup)
emails_set= set(emails)
print(emails_set)
main('https://minelead.io')
Code-Erklärung
Nachdem die Beautiful Soup-Methode auf den Inhalt angewendet wurde, hat sich der Typ geändert. Daher müssen wir ihn wieder in einen String konvertieren, um den Regex-Ausdruck darauf anwenden zu können.
Wenn das erledigt ist, rufen wir die findall-Methode von Regex für den konvertierten Inhalt auf.
Einige E-Mails können mehrfach wiederholt werden, daher stellen wir sicher, dass jedes einzelne Element nur einmal im Variablen "emails_set" vorhanden ist, indem wir die von findall zurückgegebene Liste in ein Set konvertieren.
Bonus
Um diese Methode auf realistischere Weise zu testen, können Sie mithilfe der Minelead Generator API eine Liste von Unternehmen aus Keywords erhalten und über jeden Domain-Namen iterieren, um alle damit verbundenen E-Mail-Adressen zu erhalten.
Sie können überprüfen, was eine API ist, wie sie verwendet wird, und dem bereitgestellten Beispiel folgen.
Fazit
Zusammenfassend lässt sich sagen, dass das Scrapen von Websites für E-Mails mit Python ein leistungsstarkes Tool ist, das Verkaufsstrategien und Marketingbemühungen erheblich verbessern kann. Das in diesem Blog bereitgestellte Tutorial hat gezeigt, wie einfach es ist, E-Mail-Adressen von Websites mithilfe der Beautiful Soup-Bibliothek und regulärer Ausdrücke zu extrahieren.
Es ist jedoch wichtig zu beachten, dass das Scrapen ethisch und in Übereinstimmung mit Gesetzen und Vorschriften durchgeführt werden sollte. Überprüfen Sie immer die Nutzungsbedingungen und Datenschutzrichtlinien einer Website, bevor Sie Informationen abrufen.
Darüber hinaus sollten Sie immer den Datenschutz respektieren und die gescrapten E-Mails niemals für Spamming oder unerwünschte Kommunikation verwenden. Mit dem richtigen Ansatz kann das Scrapen ein wertvolles Tool für jedes Unternehmen sein, das seine Reichweite erweitern und seine Marketingbemühungen personalisieren möchte.