Hoe te een Email Spider in Python programmeren

Zoekmachines vaak gebruik algoritmen die informatie uit webpagina's neemt en hen gerangschikt volgens populariteit. Deze algoritmen worden vaak genoemd "spinnen". Een Python programmeur kan vernemen te zootje zowat multithreaded programmeren, uitdrukkingspatroon en Web gegevens ophalen door het creëren van een spin. U kunt een Python-script voor spider starten met weinig meer dan de opgenomen Python bibliotheken en tolk.

Instructies

1

Definieer twee reguliere expressies zodat deze overeenkomen met de e-mailadressen en hyperlinks in de code van de webpagina:

urllib importeren
importeren threading
importeren re

r = «««re.compile ('(?<=href\=\"mailto:).? @.?. [\w] {0,3} (? = \ ")') # Mails
R1 = re.compile ("(? < = href\=\").*? (?) = \ ")') # Links

2

Definieer een constructor van de klasse waarin de URL van een webpagina als argument. De constructor zal de URL als uitgangspunt nemen, dan beginnen de "Spin" klasse als een aparte thread:

klasse Spider (threading. Draad):

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

Het definiëren van de "Looppas" methode, die wordt uitgevoerd wanneer een nieuwe thread van het type "Spider" begint. Deze methode verwerkt de webpagina met "urllib.urlopen", trekt e-mails van de code met behulp van de "r" reguliere expressie en worden opgeslagen in een logboekbestand. Vervolgens neemt de hyperlinks en downloadt de gegevens van die URL, starten van een nieuwe draad voor het verwerken van die webpagina:

def run(self):

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-][email protected]([0-9a-z][0-9a-z-]+.)+[a-z]{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

Voer de spin klasse door een nieuwe thread van het type "Spider" te roepen en het te leveren met een URL:

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

Tips & waarschuwingen

  • In dit voorbeeld is voor academische/educatieve doeleinden alleen, als demonstraties van patroonherkenning, threading en Web mogelijkheden voor de Python taal.