socket.error: (10061, 'Connection refused')
Ernesto Revilla
erny en sicem.biz
Dom Mayo 22 23:59:34 CEST 2005
qué es path[0]?
¿Pues imprimir eso, antes de abrir el socket?
está claro que hay un connection refused, es decir, que algún host
aludido no responde a las solicitudes del puerto 80.
Erny
Adrian Ferreres Esteller escribió:
> Hola lista:
>
> Primero quiero agradecer a todos por los consejos y ayudas que me
> disteis con mis problemas con las expresiones regulares. He de decir,
> con un poco de verguenza por mi parte, que el problema no lo tenia,
> precisamente, en expresiones regulares sino en un nombre mal escrito
> de una variable. Me explico:
>
> Yo para compilar las expresiones regulares lo hacia de esta manera:
>
> expr1="<h[1234]>.+</h1[1234]>"
> expr2="<th .*>.+</th>"
> expr3="<b>.+</b>"
>
> mi_re1=re.compile (expr1)
> mi_re2=re.compile (expr2)
> mi_re3=re.compile (expr2)
>
> Por eso mi programa me ignoraba las lineas con las etiquetas <b> y me
> sacaba dos veces las etiquetas <th>. De todas formas, como muy bien me
> explico Hernan Martinez, esta manera de manipular archivos html no es
> muy buena y segura asi que tendre que seguir trabajando.
>
> Ahora tengo otro problema que no se por donde pillar, tambien
> relacionado con la araña web. Mi araña web final se compone de tres
> programas:
>
> el downloader.py
> el reader.py
> el sorter.py
>
> El primero se encarga de bajarse las pagianas web. El segundo se
> encarga de leer las paginas web descargadas y obtener los links. Y el
> tercero se encarga leer las paginas almacenarlas en la base de datos.
> Todos los programas funcionan con hilos y se comunican entre ellos
> mediante sockets. El downloader recibe una direccion url de inicio que
> se le pasa en la linea de comandos. Una vez almacenada en el disco
> duro se pasa la ruta de directorios al reader y al sorter. El reader
> crea un hilo por pagina que recibe que se encarga de obtener los
> links, sacar la direccion url y enviarlas de nuevo al downloader que a
> su vez crea un hilo por cada nueva url. El sorter crea un hilo por
> cada pagina web descargada y las almacena en la base de datos.
>
> Pues bien, cada vez que ejecuto el downloader obtengo el siguiente
> error: "socket.error: (10061, 'Connection refused')" y la verdad es
> que no se porque. Os envio el codigo fuenta del programa a ver si
> podeis hecharme una mano. Muchas gracias a todos
>
>
> import socket
> import sys
> from string import split
> from string import find
> import os
> import threading
>
>
> def almacenamiento (path):
>
>
> direccion=path[0]+"/"
> for i in xrange (len(path)-1):
> direccion=direccion+path[i]+"/"
>
> if not os.access (direccion,os.F_OK):
> os.makedirs (direccion)
>
> if (len(path)==1) or (path[1]=="") :
> direccion=direccion+"index.htm"
> else:
> direccion=direccion+path[len(path)-1]
>
> return direccion
>
>
> def dir_web (path):
>
>
> if (len(path)==1) or (path[1]==""):
> s= socket.socket (socket.AF_INET, socket.SOCK_STREAM)
> s.connect ((path[0], 80))
> HTTP_request="GET /index.htm HTTP/1.0\r\n\r\n"
>
> if (s.send(HTTP_request)):
> web_add="/index.htm"
> else:
> web_add="/index.html"
>
> s.close ()
> else:
> web_add="";
>
> for i in xrange (1,len(path)):
> web_add=web_add+"/"+path[i]
>
> return web_add
>
> def download (direccion, web_add, host, port):
>
> print "Descargando del host: ",host
> s= socket.socket (socket.AF_INET, socket.SOCK_STREAM)
> s.connect ((host,port))
>
> HTTP_request="GET "+web_add+" HTTP/1.0\r\n\r\n"
> s.send (HTTP_request)
>
> print "Almacenando pagina en la direccion: ",direccion
> fn= open (direccion,'w')
> fin_cabecera=False
> respuesta=s.recv(1024)
>
> while respuesta:
> if fin_cabecera:
> fn.write (respuesta)
> else:
> fin=find (respuesta,"\r\n\r\n")
> if fin!=-1:
> fn.write (respuesta[fin+4])
> fin_cabecera=True
> respuesta=s.recv(1024)
>
> s.close ()
> fn.close ()
>
> class descarga (threading.Thread):
>
> def __init__ (self,conexion, cliente):
>
> threading.Thread.__init__ (self)
> self.conexion=conexion
> self.cliente= cliente
>
>
> def run (self):
>
> path=self.conexion.recv(1024)
> path=path[7:]
> path=split ('/',path)
>
> self.conexion.close()
>
> direccion= almacenamiento (path)
> web_addr=dir_web (path)
> download (direccion,web_addr,path[0],80)
>
> s= socket.socket (socket.AF_INET, socket.SOCK_STREAM)
> s.connect (("localhost",8080))
> s.send (direccion)
> s.close ()
> s.connect (("localhost",8081))
> s.send (direccion)
> s.close ()
>
>
>
>
>
> host="localhost"
> port=8080
>
> path= sys.argv[1]
> path= path[7:]
> path= split (path,'/')
>
> print path[0]
> direccion= almacenamiento (path)
> web_addr=dir_web (path)
> download (direccion,web_addr,path[0],80)
>
> s= socket.socket (socket.AF_INET, socket.SOCK_STREAM)
> s.connect ((host,port))
> s.send (direccion)
> s.close ()
> s.connect ((host,8081))
> s.send (direccion)
> s.close ()
>
> s.bind ((socket.gethostname (), 8082))
> s.listen (100)
>
> while (1):
>
> (conexion,cliente)= s.accept ()
> print "Se ha conectado otro cliente"
>
> dc= descarga (conexion,cliente)
> dc.start()
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>
--
=========================================
NO A LAS PATENTES DE SOFTWARE
http://proinnova.hispalinux.es
=========================================
Ernesto Revilla
sicem sl
Pol. Ind. Juncaril, c/ Loja Parc. 7 Local 13
18220 Albolote
http://www.sicem.biz
Tel: 637 716189
MSN: aerd en mx3.redestb.es
ICQ: 163888521
---
avast! Antivirus: Saliente mensaje limpio.
Base de datos de Virus (VPS): 0520-4, 20/05/2005
Comprobado en: 22/05/2005 23:59:36
avast! tiene los derechos reservados (c) 2000-2004 ALWIL Software.
http://www.avast.com
Más información sobre la lista de distribución Python-es