Gewusst wie: Schreiben Sie eine E-Mail-Miner für Python

December 1

Gewusst wie: Schreiben Sie eine E-Mail-Miner für Python

E-Mail Bergbau ist ein Mittel der Gewinnung von Informationen wie die Anzahl der Wörter, Sätze oder den Reichtum Ihrer Korrespondent Wortschatz, aus dem Text in e-Mail. Schreiben eine e-Mail-Bergmann mit Python erfordert viele "bewegliche Teile" in Form von Python Extensions, genannt Pakete, die e-Mail-Nachrichten von Servern herunterladen. Nachrichten werden in Zeichenfolgen konvertiert, so dass andere Python-Pakete sie analysieren und zeigen, was sie finden können. Dies ist eine hochkomplexe Aufgabe, die mehr als eine vorübergehende lässig wissen über Python Programmierung erfordert. Gehen Sie daher mit Vorsicht und Geduld.

Anweisungen

1 Öffnen Sie eine terminal-Sitzung und geben Sie Python - V an der Eingabeaufforderung zu überprüfen, ob Sie Python 2.6 haben oder höher, jedoch nicht 3.0 oder höher. Version 2.6 oder 2.7 sind ideal, weil sie mit NLTK und PyYAML vereinbar sind. Besuchen Sie die Indexseite für Python-Pakete; finden Sie und herunterladen Sie der PyYAML und NLTK Pakete. Entpacken/entpacken Sie sie. Ändern Sie Ihr Verzeichnis in das Verzeichnis PyYAML. Bei Command Line Prompt eintippen: Sudo Python setup.py installieren. Es sollte wie folgt aussehen:

Mein-Computer: PyYAML-3.2.0 mir$ Sudo Python setup.py installieren

Sie werden aufgefordert, ein Kennwort einzugeben. Geben Sie es und drücken Sie die return-Taste. Verfahren Sie dieses für jedes Python-Paket, das Sie installieren.

2 Herunterladen von e-Mail-Nachrichten für die Analyse mit den folgenden Codezeilen:

! / Usr/Local/bin/Python Importieren Sie, Poplib, Mailconfig, Getpass, sys

Mailserver = mailconfig.popservername

MailUser = mailconfig.popusername

Mailpasswd = getpass.getpass ('Passwort für %s?' % Mailserver)

Server = Poplib. POP3(Mailserver)

Server.User(MailUser)

Server.pass_(mailpasswd)

Print(Server.getwelcome())

MsgCount, MsgBytes = server.stat()

Print ("Es gibt", MsgCount, 'e Mailnachrichten in', MsgBytes, 'Bytes')

Print(Server.List())

Drucken ('-' * 80)

Eingang ('[Press Enter Key]')

für i in range(msgCount):

HDR, message, Oktette = server.retr(i+1)

für Zeile Nachricht: print(line.decode())

Lesen ('-' * 80)

Wenn ich < MsgCount - 1:

Dieses Skript zu Ihrem pop3-Email-Server verbindet, Sie aufgefordert, Ihren Benutzernamen und Ihr Kennwort, und die Anzahl der Nachrichten auf dem Server in den Speicher zu lesen.

3 Grube Sie Ihren e-Mail-Nachrichten durch Konvertierung jede Nachricht in eine Zeichenfolge, ein nativer Datentyp in Python, die mit Python String-Methoden, Modul für reguläre Ausdrücke und Natural Language Toolkit gesucht werden können:

m = MsgCount [1]

s = str(m)

Importieren Sie aus email.parser Parser

Nltk importieren

wieder importieren

4 Meine erste Nachricht für Informationen von Interesse. Entdecken Sie, wie viele Wörter in dieser Nachricht sind, indem Sie den folgenden Befehl eingeben:

len(s)

Es gibt einen ganzzahligen Wert für die Anzahl der Wörter zurück. Um jeder Satz mit dem Wort Hypothek zu suchen, geben Sie den folgenden Befehl ein NLTK:

s.Concordance('mortgage')

Dadurch wird jeder Satz mit dem Wort Hypothek in ihm zurückgegeben; sehr nützlich für Detektive Hypothek Betrug untersucht.