Posted in Χωρίς κατηγορία
Πως έκανα extract email addresses με Python
Πρόσφατα χρειάστηκε να κάνω εξαγωγή όλες τις διευθύνσεις από ένα mailbox οπότε σκέφτηκα πώς αν και υπάρχουν αρκετοί τρόποι να κάνεις κάτι τέτοιο αποφάσισα να γράψω ένα script σε python την οποία και διαβάζω στον ελεύθερο μου χρόνο και πραγματικά θα την συνιστούσα στον καθένα λόγο της απλότητάς της αλλά και της δύναμης της οποίας της προσδίδουν οι άπειρες βιβλιοθήκες που υπάρχουν γι’αυτήν.
Η λογική είναι η εξής :
- Εισάγουμε τις απαραίτητες βιβλιοθήκες ,
[cc lang=”python” width=”100%”]#!/usr/bin/python3 from imapclient import IMAPClient import pyzmail , imaplib , pprint ,sys from validate_email import validate_email imaplib._MAXLINE = 10000000
[/cc]
- Ορίζουμε ποιες παραμέτρους χρειαζόμαστε ο χρήστης να δώσει κάθε φορά που τρέχει το πρόγραμμα
[cc lang=”python” width=”100%”]if len(sys.argv) != 4: print("Usage:\n %s <server> <username> <password>" % (sys.argv[0][sys.argv[0].rfind("\\") + 1:])) sys.exit()
[/cc]
- Συνδεόμαστε στον imap server
[cc lang=”python” width=”100%”]serverName = str(sys.argv[1]) username = str(sys.argv[2]) password = str(sys.argv[3]) server = IMAPClient(serverName, use_uid=True) server.login(username,password) select_info = server.select_folder('INBOX',readonly=True) print('%d messages in found in INBOX' % select_info[b'EXISTS']) print('Exporting..')
[/cc]
- Κάνουμε loop στα μηνύματα του server
[cc lang=”python” width=”100%”]#get ids of inbox messages uids = server.search('ALL') for val in uids: rawMessages = server.fetch([val], ['BODY[]','FLAGS']) message = pyzmail.PyzMessage.factory(rawMessages[val][b'BODY[]']) address = message.get_address('reply-to') print(address[0]) is_valid = validate_email(address[0]) if is_valid == True and address[0] != '': with open(emailFile, 'a') as out: out.write(address[0].lower() + '\n')
[/cc]
- Για κάθε μήνυμα βρίσκουμε την διεύθυνση που υπάρχει στο reply-to και το αποθηκεύουμε στο txt αρχείο του οποίου το όνομα όρισα να είναι emails-export.txt
To script αυτό αν και απλό συνδυάζει αρκετές βιβλιοθήκες ενώ είναι πολύ καλό για έναν αρχάριο να δει τι μπορεί να κάνει με λίγες γραμμές κώδικα .
Το τελικό script μπορείτε να το βρείτε εδώ : https://github.com/delmoras/pyextractor
Python μαθαίνω από εδώ : http://inventwithpython.com/