Søgemaskiner bruger ofte algoritmer , der tager oplysninger fra websider og rangordne dem efter popularitet . Disse algoritmer er ofte kaldet " edderkopper ". En Python programmør kan lære en masse om flertrådede programmer , regulære udtryk mønstertilpasning og Web data hentning ved at oprette en edderkop . Du kan starte en Python edderkop script med lidt mere end de inkluderede Python biblioteker og tolk. Ting du skal
Pythonfortolkeren
Vis Flere Instruktioner
1
Definer to regulære udtryk til at matche email-adresser og hyperlinks i koden på websiden : Hej
import urllibimport threadingimport re
r = re.compile ( ' ( ? <= href \\ = \\ "mailto :). *? @ . *? . [ \\ w ] { 0,3 } ( ? = \\ " ) ') # Mailsr1 = re.compile ( ' ( ? <= href \\ = \\ "). *? ( ? = \\ " ) ') # Links
2
Definer en klasse konstruktør , der tager en webside URL som sin argumentation . Konstruktøren vil tage URL'en som udgangspunkt , så begynder de " Spider " klasse som en separat tråd : Hej
class Spider ( threading.Thread ) : def __ init__ (selv , adresse): self.url = addressthreading.Thread.__init__ (selv-)
3
Definer "run" -metoden, som udfører hver gang en ny tråd af typen " Spider " begynder . Denne metode behandler webside med " urllib.urlopen " , trækker e-mails fra kode ved hjælp af "r" regulært udtryk og gemmer dem i en logfil . Det tager så hyperlinks og downloader oplysninger fra denne webadresse , der starter en ny tråd for at behandle webside : Hej
def run (selv-) : Hej
source = urllib.urlopen ( self.url . ) read () mails = r.findall (kilde) mails = listen ( sæt ( mails) ) log = åben ( ' log.txt ', ' a') for jeg i mails : Hvis re.match ( " ^ [ ,"! _.0 -9a- z- ] + @ ( . [0 -9a- z] [0 -9a- z- ] + ) + [az] { 2,4 } $ " , i) = Ingen: hvis (i + '\\ n' ) ikke (åbne ( ' log.txt ', ' r' ) readlines (). ) : print ' Gemt : », ilog.write (i + ' \\ n ' ) count + = 1log.close () URL'er = r1.findall (kilde ) for url i webadresser: . Crawl ( url ) start ()
4
Kør Spider klassen ved at kalde en ny tråd af typen " Spider ", og leverer det med en URL : Hej
Spider ( www.google.com ) starte ( )
.