Sökmotorer ofta använder algoritmer som tar information från webbsidor och rangordna dem efter popularitet . Dessa algoritmer är ofta kallas " spindlar . " En Python programmerare kan lära dig mycket om flertrådade programmering , reguljära uttryck mönstermatchning och uppgifter Web Hämtar genom att skapa en spindel . Du kan starta en Python spindel manus med lite mer än de ingående Python bibliotek och tolk . Saker du behöver
Pythontolk
Visa fler instruktioner
1
Definiera två reguljära uttryck för att matcha e-postadresser och hyperlänkar i koden för webbsidan :
import urllibimport threadingimport re
r = re.compile ( ' ( ? < = href \\ = \\ " mailto :) . * ? @ . * ? . [ \\ w ] { 0,3 } ( ? = \\ " ) ' ) # Mailsr1 = re.compile ( ' ( ? < = href \\ = \\ " ) . * ? ( ? = \\ " ) ' ) # Länkar
2
Definiera en klass konstruktor som tar en webbadress webbsida som argument . Konstruktören tar webbadressen som utgångspunkt , sedan börja " Spider " klass som en separat tråd :
klass Spider ( threading.Thread ) : def __ init__ ( jaget , adress ) : self.url = addressthreading.Thread.__init__ ( egen) Addera 3
Definiera " run "-metoden , som exekverar när en ny tråd av typen " Spider " börjar . Denna metod behandlar webbsidan med " urllib.urlopen " , drar e-post från koden genom att använda " r " reguljära uttryck och lagrar dem i en loggfil . Det tar sedan hyperlänkar och laddar ned informationen från den adressen , starta en ny tråd för att behandla denna webbsida :
def run (själv ) :
source = urllib.urlopen ( self.url . ) läste ( ) postmeddelanden = r.findall ( källa ) postmeddelanden = lista ( set ( post ) ) log = open ( ' log.txt ' , ' a ' ) for i in post : om re.match ( " ^ [ ,"! _.0 - 9a - z - ] + @ ( . [ 0 - 9a - z ] [ 0 - 9a - z - ] + ) + [ az ] { 2,4 } $ " , i) = None : om (i + ' \\ n ' ) inte ( öppna ( ' log.txt ' , ' r ' ) readlines () . ) : print 'Sparad : ' , ilog.write (i + ' \\ n ' ) count + = 1log.close ( ) urls = r1.findall ( källa ) för i URL: er : . Crawl ( URL ) start ( )
4
Kör Spider klassen genom att ringa en ny tråd av typen " Spider " och leverera det med en URL :
Spider ( ' www.google.com ' ) startar ( ) Addera
.