How to Program en e-post Spider i Python

Søkemotorer bruker ofte algoritmer som tar informasjon fra websider og rangerer dem etter popularitet. Disse algoritmene blir ofte kalt "edderkopper". En Python programmerer kan lære mye om flertrådet programmering, regulære uttrykk mønstergjenkjenning og web data henting ved å opprette en edderkopp. Du kan starte en Python edderkopp script med litt mer enn de inkluderte Python biblioteker og tolk.

Bruksanvisning

1 Definer to regulære uttrykk for å matche e-postadresser og hyperkoblinger i koden på websiden:

import urllib
import threading
import re

r = re.compile ( '(? <= href \ = \ "mailto

:).? @.?. [\ w] {0,3} (? = \")') # post
r1 = re.compile ( '(? <= href \ = \ "). *? (? = \")') # Lenker

2 Definer en klasse konstruktør som tar en webside URL som sitt argument. Konstruktøren tar webadressen som et utgangspunkt, og deretter begynne på "Spider" -klassen som en egen tråd:

klasse Spider (threading.Thread):

def __init__(self,address):
self.url = address
threading.Thread.__init__ ( self )

3 Definer "run" metoden, som utfører hver gang en ny tråd av type "Spider" begynner. Denne metoden behandler websiden med "urllib.urlopen", trekker e-poster fra koden ved å bruke "r" vanlig uttrykk og lagrer dem i en loggfil. Det tar så hyperkoblinger og laster ned informasjon fra denne URLen, starter en ny tråd for å behandle denne websiden:

def kjøre (selv):

source = urllib.urlopen(self.url).read()
mails = r.findall(source)
mails = list(set(mails))
log = open('log.txt','a')
for i in mails:
if re.match(&quot;^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[az]{2,4}$&quot;, i) != None:
if (i+'\n') not in (open('log.txt','r').readlines()):
print 'Saved: ',i
log.write(i+'\n')
count += 1
log.close()
urls = r1.findall(source)
for url in urls:
Crawl(url).start()

4 Kjør Spider klassen ved å ringe en ny tråd av type "Spider" og forsyne den med en URL:

Spider ( 'www.google.com'). Start ()

Hint

  • Dette eksemplet er kun faglige / pedagogiske formål, som demonstrasjoner av mønstergjenkjenning, threading og web evner av Python språket.