Ορίστε δύο κανονικές εκφράσεις για να ταιριάζει με τις διευθύνσεις ηλεκτρονικού ταχυδρομείου και υπερ-συνδέσεις στον κώδικα της ιστοσελίδας :
εισαγωγή urllibimport threadingimport re
r = re.compile ( ' ( ? <= href \\ = \\ " mailto :) . * ; @ . *? . [ \\ w ] { 0,3 } ( ? = \\ " ) " ) # Mailsr1 = re.compile ( ' ( ? <= href \\ = \\ " ) . * ; ( ? = \\ " ) " ) # Links
Η 2
Ορίστε ένα κατασκευαστή της κλάσης που λαμβάνει μια διεύθυνση URL ιστοσελίδας ως επιχείρημά της . Ο κατασκευαστής θα αναλάβει τη διεύθυνση URL ως σημείο εκκίνησης , στη συνέχεια να αρχίσει την κατηγορία " Spider" ως ένα ξεχωριστό νήμα :
Spider κατηγορίας ( threading.Thread ) : def __ init__ ( self , διεύθυνση) : self.url = addressthreading.Thread.__init__ ( αυτο)
εικόνων 3
να ορίσετε τη μέθοδο "τρέχει" , η οποία εκτελεί κάθε φορά που ένα νέο νήμα τύπου " Spider" αρχίζει . Αυτή η μέθοδος επεξεργάζεται την ιστοσελίδα με " urllib.urlopen " , τραβά τα μηνύματα από τον κώδικα με τη χρήση του "r" κανονική έκφραση και τα αποθηκεύει σε ένα αρχείο καταγραφής . Στη συνέχεια λαμβάνει τις υπερ-συνδέσεις και κατεβάζει τις πληροφορίες από αυτήν τη διεύθυνση URL , ξεκινώντας ένα νέο νήμα για να επεξεργαστεί αυτή την ιστοσελίδα :
def τρέξει ( αυτο) :
source = urllib.urlopen ( self.url . ) read ( ) = mails r.findall ( πηγή ) = mails λίστα (σετ ( mails ) ) = log ανοιχτή ( « log.txt ' , ' a ') για i στα μηνύματα : αν re.match ( " ^ [ ,". ) read ( ) = mails r.findall ( pi̱gí̱ ) = mails lísta (set ( mails ) ) = log anoichtí̱ ( « log.txt ' , ' a ') gia i sta mi̱nýmata :̱ an re.match ( " ^ [ _.0 - 9a-z - ] + @ ( [ 0 - 9a-z ] [ 0 - 9a-z - ] + . ) + [ az ] { 2,4 } $ " , i ) = None : αν ( i + '\\ n' ) δεν (ανοιχτή ( « log.txt ',' r ' ) readlines ( ) . ) : print ' Saved : ' , ilog.write ( i + ' \\ n ' ) μετρούν + = 1log.close ( ) urls = r1.findall ( πηγή ) για την url σε urls : . Crawl ( url ) start ()
Η 4
Εκτελέστε την κατηγορία Spider καλώντας ένα νέο νήμα τύπου " Spider" και την παροχή με μια διεύθυνση URL : .
Spider ( www.google.com ) start ()
Η
εικόνων
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα