Nwlapcug.com


Come programmare un Email Spider in Python

Motori di ricerca spesso uso di algoritmi che prende le informazioni dalle pagine Web e classificarli in base alla popolarità. Questi algoritmi sono spesso chiamati "ragni". Un programmatore Python può imparare mólto circa la programmazione multithreading, espressione regolare i criteri di ricerca e recupero di dati Web creando un ragno. Puoi iniziare uno script di Python ragno con poco più che le librerie Python incluse e interprete.

Istruzioni

1

Definire due espressioni regolari per abbinare gli indirizzi di posta elettronica e i collegamenti ipertestuali nel codice della pagina Web:

importazione urllib
importazione di threading
importare re

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

2

Definire un costruttore di classe che accetta un URL di pagina Web come argomento. Il costruttore vi porterà l'URL come punto di partenza, poi iniziare la classe "Spider" come un thread separato:

Classe Spider (filettatura. Thread):

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

Definire il metodo di "eseguire", che viene eseguito ogni volta che un nuovo thread di tipo "Ragno" comincia. Questo metodo elabora la pagina Web con "urllib.urlopen", tira le email dal codice utilizzando l'espressione regolare "r" e li archivia in un file di log. Quindi prende i collegamenti ipertestuali e Scarica le informazioni da tale URL, iniziando un nuovo thread per elaborare tale pagina Web:

run(self) def:

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-]+.)+[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

Eseguire la classe Spider chiamando un nuovo thread di tipo "Ragno" e fornirlo con un URL:

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

Consigli & Avvertenze

  • Questo esempio è per scopi accademici/educativi soltanto, come dimostrazioni di corrispondenza dei modelli, la filettatura e la funzionalità Web del linguaggio Python.