Re: [Python-es] Reintentar

2015-08-26 Por tema Gonzalo V
Incríble!.
Gracias!!

Saludos,
Gonzalo

2015-08-26 11:42 GMT-04:00 Miguel González Álvarez :

>
>
> 2015-08-26 17:19 GMT+02:00 Gonzalo V :
>
>> ...
>> ¿Sabes tu cómo simular un error 504 en python?
>>
>>
>>
> Para simular respuestas HTTP es muy útil el servicio http://httpbin.org/
> (por cierto escrito en Python).
>
> En tu caso, se haría poniendo como URL http://httpbin.org/status/504:
>
> >>> import urllib.request
> >>> req = urllib.request.urlopen('http://httpbin.org/status/504')
> Traceback (most recent call last):
>   File "", line 1, in 
>   File "/usr/local/lib/python3.4/urllib/request.py", line 153, in urlopen
> return opener.open(url, data, timeout)
>   File "/usr/local/lib/python3.4/urllib/request.py", line 461, in open
> response = meth(req, response)
>   File "/usr/local/lib/python3.4/urllib/request.py", line 571, in
> http_response
> 'http', request, response, code, msg, hdrs)
>   File "/usr/local/lib/python3.4/urllib/request.py", line 499, in error
> return self._call_chain(*args)
>   File "/usr/local/lib/python3.4/urllib/request.py", line 433, in
> _call_chain
> result = func(*args)
>   File "/usr/local/lib/python3.4/urllib/request.py", line 579, in
> http_error_default
> raise HTTPError(req.full_url, code, msg, hdrs, fp)
> urllib.error.HTTPError: HTTP Error 504: GATEWAY TIMEOUT
>
>
> --
> Miguel González
> migonzal...@gmail.com
> PGP ID: 0C63761BEEBD05D3
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Reintentar

2015-08-26 Por tema Miguel González Álvarez
2015-08-26 17:19 GMT+02:00 Gonzalo V :

> ...
> ¿Sabes tu cómo simular un error 504 en python?
>
>
>
Para simular respuestas HTTP es muy útil el servicio http://httpbin.org/
(por cierto escrito en Python).

En tu caso, se haría poniendo como URL http://httpbin.org/status/504:

>>> import urllib.request
>>> req = urllib.request.urlopen('http://httpbin.org/status/504')
Traceback (most recent call last):
  File "", line 1, in 
  File "/usr/local/lib/python3.4/urllib/request.py", line 153, in urlopen
return opener.open(url, data, timeout)
  File "/usr/local/lib/python3.4/urllib/request.py", line 461, in open
response = meth(req, response)
  File "/usr/local/lib/python3.4/urllib/request.py", line 571, in
http_response
'http', request, response, code, msg, hdrs)
  File "/usr/local/lib/python3.4/urllib/request.py", line 499, in error
return self._call_chain(*args)
  File "/usr/local/lib/python3.4/urllib/request.py", line 433, in
_call_chain
result = func(*args)
  File "/usr/local/lib/python3.4/urllib/request.py", line 579, in
http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 504: GATEWAY TIMEOUT


-- 
Miguel González
migonzal...@gmail.com
PGP ID: 0C63761BEEBD05D3
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Reintentar

2015-08-26 Por tema Sergio Soto Núñez
Desconozco la finalidad de tu programa.
Entiendo que tienes la necesidad de depurar y quieres llegar a ese punto
para ver como responde tu programa. Puedes simplemente sacar a una función
la ejecución de la llamada con urlib y devolver el código de respuesta. Así
puedes reintentarlo.

Un saludo

2015-08-26 17:19 GMT+02:00 Gonzalo V :

> Gracias Sergio. La verdad es que no ha sido fácil aprender python sobre
> todo si casi toda la info de calidad está en inglés y las traducciones son
> de personas muy nobles que lo hacen sin interés. Algunas están traducidas
> al mexicano, con sus modismos, otros en argentino, español, en fin...
> Gracias por tu respuesta, había pensado hacerlo por ensayo e error ya que
> encuentro que es una forma segura de hacer un codigo "a prueba de balas"
> pero no sé cómo emular o simular un error 504, que son errores muy
> inesperados.
> ¿Sabes tu cómo simular un error 504 en python?
>
> Saludos,
> Gonzalo
>
> El 26 de agosto de 2015, 11:06, Sergio Soto Núñez 
> escribió:
>
>> Buenas Gonzalo,
>> la verdad es que para llevar poco tiempo estás haciendo cosas muy
>> interesante.
>>
>> Si me dejas que te de un consejo, siempre que tengas una duda lo mejor es
>> abrir una consola (python o ipython) y realizar la prueba. Puedes tirar
>> linea a linea hasta emular la situación que estás estudiando.
>>
>> Otra opción mas potente es utilizar un debugger (como ipdb [1]) para
>> setear un break point. El intérprete parará en esa línea y podrás observar
>> el valor de cada variable y estudiar el comportamiento.
>>
>> Te digo esto porque preguntas como las que has hecho se resuelven
>> fácilmente tal y como han hecho algunos de los miembros, tres líneas de
>> código y ejecutandolo. Y siempre aprenderás mucho más por ti mismo que
>> preguntando.
>>
>> ¡Un saludo y ánimos en tu proyecto!
>>
>> [1] Un manual de uso de ipdb:
>> https://pythonadventures.wordpress.com/tag/ipdb/
>>
>> On Wed, Aug 26, 2015 at 12:07 PM, Alberto J. Sánchez Sanz <
>> ajsanchezs...@gmail.com> wrote:
>>
>>> for i in range(3):
>>>   print i
>>>
>>> On 26 August 2015 at 12:00, Yamila Moreno Suárez 
>>> wrote:
>>>
 i = 0
 while i < 3:
  print(i)
  i += 1

 output >>
 0
 1
 2




 2015-08-26 11:47 GMT+02:00 Gonzalo V :

> Muchas Gracias Andres!
> Tenia entendido que era While true daba el resultado . ¿Cómo lee el
> intérprete while 1: Que reintente 1 sola vez?
> ¿Cuál sería el código para reintentos controlados (que reintente 3
> veces, por ejemplo )?
> Gracias!
>
> Saludos,
> Gonzalo
>
> 2015-08-26 2:13 GMT-04:00 Oriol Andrés :
>
>> hola, puedes encerrar la funcion en un bucle while.
>> while 1:
>>   response = urlopen
>>   if response.headers.code == 200:
>>  break
>> On Aug 26, 2015 2:02 a.m., "Gonzalo V"  wrote:
>>
>>> Hola a todos.
>>> Tengo un código que hace preguntas a un servidor y algunas veces
>>> retorna un 504, el codigo lo maneja bien pero me gustaría que 
>>> reintentara.
>>> ¿Alguien me puede ayudar?
>>> el codigo es:
>>> import urllib.request
>>> import urllib.error
>>> from bs4 import BeautifulSoup
>>> import re, csv
>>> from FuncionCsv import LlenarCsv
>>>
>>>
>>>
>>> fhand=open('isbn.txt')
>>> #csvfile=open('ResultadoScrapping.csv', 'w', newline='')
>>> for line in fhand:
>>> try:
>>>req=urllib.request.urlopen(''+line)
>>>resp=req.read()
>>>soup=BeautifulSoup(resp,'html.parser')
>>>
>>> origen=soup.find(string=re.compile("Origen:
>>> ")).find_next().get_text()
>>> nombre=soup.find(name="h1",itemprop="name").get_text()
>>>
>>> precioAhora=soup.find(name="p",class_="precioAhora").get_text()
>>> d=soup.find(name="p",class_="stock").get_text()
>>> disp=d.split()
>>> except AttributeError:
>>> disp="no encontrado"
>>> nombre=''
>>> origen=''
>>> precioAhora=''
>>> except urllib.error.HTTPError as e:
>>> if e.getcode()==504:
>>> disp = "sin respuesta del servidor"
>>> print (e.getcode(),disp)
>>> csvfile.close()
>>>
>>> print(line,nombre,origen,precioAhora,disp)
>>> line1=line.split()
>>> LlenarCsv('Resultado.csv',line1,nombre,origen,precioAhora,disp)
>>> cierracsv()
>>>
>>>
>>>
>>>
>>> Saludos,
>>> Gonzalo
>>>
>>> ___
>>> Python-es mailing list
>>> Python-es@python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>> ___
>> Python-es mailing list
>> Python-es@python.org
>> https://mail.python.org/mailman/

Re: [Python-es] Reintentar

2015-08-26 Por tema Gonzalo V
Gracias Sergio. La verdad es que no ha sido fácil aprender python sobre
todo si casi toda la info de calidad está en inglés y las traducciones son
de personas muy nobles que lo hacen sin interés. Algunas están traducidas
al mexicano, con sus modismos, otros en argentino, español, en fin...
Gracias por tu respuesta, había pensado hacerlo por ensayo e error ya que
encuentro que es una forma segura de hacer un codigo "a prueba de balas"
pero no sé cómo emular o simular un error 504, que son errores muy
inesperados.
¿Sabes tu cómo simular un error 504 en python?

Saludos,
Gonzalo

El 26 de agosto de 2015, 11:06, Sergio Soto Núñez 
escribió:

> Buenas Gonzalo,
> la verdad es que para llevar poco tiempo estás haciendo cosas muy
> interesante.
>
> Si me dejas que te de un consejo, siempre que tengas una duda lo mejor es
> abrir una consola (python o ipython) y realizar la prueba. Puedes tirar
> linea a linea hasta emular la situación que estás estudiando.
>
> Otra opción mas potente es utilizar un debugger (como ipdb [1]) para
> setear un break point. El intérprete parará en esa línea y podrás observar
> el valor de cada variable y estudiar el comportamiento.
>
> Te digo esto porque preguntas como las que has hecho se resuelven
> fácilmente tal y como han hecho algunos de los miembros, tres líneas de
> código y ejecutandolo. Y siempre aprenderás mucho más por ti mismo que
> preguntando.
>
> ¡Un saludo y ánimos en tu proyecto!
>
> [1] Un manual de uso de ipdb:
> https://pythonadventures.wordpress.com/tag/ipdb/
>
> On Wed, Aug 26, 2015 at 12:07 PM, Alberto J. Sánchez Sanz <
> ajsanchezs...@gmail.com> wrote:
>
>> for i in range(3):
>>   print i
>>
>> On 26 August 2015 at 12:00, Yamila Moreno Suárez 
>> wrote:
>>
>>> i = 0
>>> while i < 3:
>>>  print(i)
>>>  i += 1
>>>
>>> output >>
>>> 0
>>> 1
>>> 2
>>>
>>>
>>>
>>>
>>> 2015-08-26 11:47 GMT+02:00 Gonzalo V :
>>>
 Muchas Gracias Andres!
 Tenia entendido que era While true daba el resultado . ¿Cómo lee el
 intérprete while 1: Que reintente 1 sola vez?
 ¿Cuál sería el código para reintentos controlados (que reintente 3
 veces, por ejemplo )?
 Gracias!

 Saludos,
 Gonzalo

 2015-08-26 2:13 GMT-04:00 Oriol Andrés :

> hola, puedes encerrar la funcion en un bucle while.
> while 1:
>   response = urlopen
>   if response.headers.code == 200:
>  break
> On Aug 26, 2015 2:02 a.m., "Gonzalo V"  wrote:
>
>> Hola a todos.
>> Tengo un código que hace preguntas a un servidor y algunas veces
>> retorna un 504, el codigo lo maneja bien pero me gustaría que 
>> reintentara.
>> ¿Alguien me puede ayudar?
>> el codigo es:
>> import urllib.request
>> import urllib.error
>> from bs4 import BeautifulSoup
>> import re, csv
>> from FuncionCsv import LlenarCsv
>>
>>
>>
>> fhand=open('isbn.txt')
>> #csvfile=open('ResultadoScrapping.csv', 'w', newline='')
>> for line in fhand:
>> try:
>>req=urllib.request.urlopen(''+line)
>>resp=req.read()
>>soup=BeautifulSoup(resp,'html.parser')
>>
>> origen=soup.find(string=re.compile("Origen:
>> ")).find_next().get_text()
>> nombre=soup.find(name="h1",itemprop="name").get_text()
>>
>> precioAhora=soup.find(name="p",class_="precioAhora").get_text()
>> d=soup.find(name="p",class_="stock").get_text()
>> disp=d.split()
>> except AttributeError:
>> disp="no encontrado"
>> nombre=''
>> origen=''
>> precioAhora=''
>> except urllib.error.HTTPError as e:
>> if e.getcode()==504:
>> disp = "sin respuesta del servidor"
>> print (e.getcode(),disp)
>> csvfile.close()
>>
>> print(line,nombre,origen,precioAhora,disp)
>> line1=line.split()
>> LlenarCsv('Resultado.csv',line1,nombre,origen,precioAhora,disp)
>> cierracsv()
>>
>>
>>
>>
>> Saludos,
>> Gonzalo
>>
>> ___
>> Python-es mailing list
>> Python-es@python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>

 ___
 Python-es mailing list
 Python-es@python.org
 https://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/


>>>
>>>
>>> --
>>> Yamila  Moreno Suárez
>>> http://dendarii.es
>>> http://moduslaborandi.net
>>>
>>> ___
>>> Python-es mailing list
>>> Python-es@pyth

Re: [Python-es] Reintentar

2015-08-26 Por tema Sergio Soto Núñez
Buenas Gonzalo,
la verdad es que para llevar poco tiempo estás haciendo cosas muy
interesante.

Si me dejas que te de un consejo, siempre que tengas una duda lo mejor es
abrir una consola (python o ipython) y realizar la prueba. Puedes tirar
linea a linea hasta emular la situación que estás estudiando.

Otra opción mas potente es utilizar un debugger (como ipdb [1]) para setear
un break point. El intérprete parará en esa línea y podrás observar el
valor de cada variable y estudiar el comportamiento.

Te digo esto porque preguntas como las que has hecho se resuelven
fácilmente tal y como han hecho algunos de los miembros, tres líneas de
código y ejecutandolo. Y siempre aprenderás mucho más por ti mismo que
preguntando.

¡Un saludo y ánimos en tu proyecto!

[1] Un manual de uso de ipdb:
https://pythonadventures.wordpress.com/tag/ipdb/

On Wed, Aug 26, 2015 at 12:07 PM, Alberto J. Sánchez Sanz <
ajsanchezs...@gmail.com> wrote:

> for i in range(3):
>   print i
>
> On 26 August 2015 at 12:00, Yamila Moreno Suárez 
> wrote:
>
>> i = 0
>> while i < 3:
>>  print(i)
>>  i += 1
>>
>> output >>
>> 0
>> 1
>> 2
>>
>>
>>
>>
>> 2015-08-26 11:47 GMT+02:00 Gonzalo V :
>>
>>> Muchas Gracias Andres!
>>> Tenia entendido que era While true daba el resultado . ¿Cómo lee el
>>> intérprete while 1: Que reintente 1 sola vez?
>>> ¿Cuál sería el código para reintentos controlados (que reintente 3
>>> veces, por ejemplo )?
>>> Gracias!
>>>
>>> Saludos,
>>> Gonzalo
>>>
>>> 2015-08-26 2:13 GMT-04:00 Oriol Andrés :
>>>
 hola, puedes encerrar la funcion en un bucle while.
 while 1:
   response = urlopen
   if response.headers.code == 200:
  break
 On Aug 26, 2015 2:02 a.m., "Gonzalo V"  wrote:

> Hola a todos.
> Tengo un código que hace preguntas a un servidor y algunas veces
> retorna un 504, el codigo lo maneja bien pero me gustaría que reintentara.
> ¿Alguien me puede ayudar?
> el codigo es:
> import urllib.request
> import urllib.error
> from bs4 import BeautifulSoup
> import re, csv
> from FuncionCsv import LlenarCsv
>
>
>
> fhand=open('isbn.txt')
> #csvfile=open('ResultadoScrapping.csv', 'w', newline='')
> for line in fhand:
> try:
>req=urllib.request.urlopen(''+line)
>resp=req.read()
>soup=BeautifulSoup(resp,'html.parser')
>
> origen=soup.find(string=re.compile("Origen:
> ")).find_next().get_text()
> nombre=soup.find(name="h1",itemprop="name").get_text()
> precioAhora=soup.find(name="p",class_="precioAhora").get_text()
> d=soup.find(name="p",class_="stock").get_text()
> disp=d.split()
> except AttributeError:
> disp="no encontrado"
> nombre=''
> origen=''
> precioAhora=''
> except urllib.error.HTTPError as e:
> if e.getcode()==504:
> disp = "sin respuesta del servidor"
> print (e.getcode(),disp)
> csvfile.close()
>
> print(line,nombre,origen,precioAhora,disp)
> line1=line.split()
> LlenarCsv('Resultado.csv',line1,nombre,origen,precioAhora,disp)
> cierracsv()
>
>
>
>
> Saludos,
> Gonzalo
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
 ___
 Python-es mailing list
 Python-es@python.org
 https://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/


>>>
>>> ___
>>> Python-es mailing list
>>> Python-es@python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>>
>>
>> --
>> Yamila  Moreno Suárez
>> http://dendarii.es
>> http://moduslaborandi.net
>>
>> ___
>> Python-es mailing list
>> Python-es@python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Reintentar

2015-08-26 Por tema Alberto J . Sánchez Sanz
for i in range(3):
  print i

On 26 August 2015 at 12:00, Yamila Moreno Suárez 
wrote:

> i = 0
> while i < 3:
>  print(i)
>  i += 1
>
> output >>
> 0
> 1
> 2
>
>
>
>
> 2015-08-26 11:47 GMT+02:00 Gonzalo V :
>
>> Muchas Gracias Andres!
>> Tenia entendido que era While true daba el resultado . ¿Cómo lee el
>> intérprete while 1: Que reintente 1 sola vez?
>> ¿Cuál sería el código para reintentos controlados (que reintente 3 veces,
>> por ejemplo )?
>> Gracias!
>>
>> Saludos,
>> Gonzalo
>>
>> 2015-08-26 2:13 GMT-04:00 Oriol Andrés :
>>
>>> hola, puedes encerrar la funcion en un bucle while.
>>> while 1:
>>>   response = urlopen
>>>   if response.headers.code == 200:
>>>  break
>>> On Aug 26, 2015 2:02 a.m., "Gonzalo V"  wrote:
>>>
 Hola a todos.
 Tengo un código que hace preguntas a un servidor y algunas veces
 retorna un 504, el codigo lo maneja bien pero me gustaría que reintentara.
 ¿Alguien me puede ayudar?
 el codigo es:
 import urllib.request
 import urllib.error
 from bs4 import BeautifulSoup
 import re, csv
 from FuncionCsv import LlenarCsv



 fhand=open('isbn.txt')
 #csvfile=open('ResultadoScrapping.csv', 'w', newline='')
 for line in fhand:
 try:
req=urllib.request.urlopen(''+line)
resp=req.read()
soup=BeautifulSoup(resp,'html.parser')

 origen=soup.find(string=re.compile("Origen:
 ")).find_next().get_text()
 nombre=soup.find(name="h1",itemprop="name").get_text()
 precioAhora=soup.find(name="p",class_="precioAhora").get_text()
 d=soup.find(name="p",class_="stock").get_text()
 disp=d.split()
 except AttributeError:
 disp="no encontrado"
 nombre=''
 origen=''
 precioAhora=''
 except urllib.error.HTTPError as e:
 if e.getcode()==504:
 disp = "sin respuesta del servidor"
 print (e.getcode(),disp)
 csvfile.close()

 print(line,nombre,origen,precioAhora,disp)
 line1=line.split()
 LlenarCsv('Resultado.csv',line1,nombre,origen,precioAhora,disp)
 cierracsv()




 Saludos,
 Gonzalo

 ___
 Python-es mailing list
 Python-es@python.org
 https://mail.python.org/mailman/listinfo/python-es
 FAQ: http://python-es-faq.wikidot.com/


>>> ___
>>> Python-es mailing list
>>> Python-es@python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>>
>> ___
>> Python-es mailing list
>> Python-es@python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
>
> --
> Yamila  Moreno Suárez
> http://dendarii.es
> http://moduslaborandi.net
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Reintentar

2015-08-26 Por tema Kiko
El 26 de agosto de 2015, 13:41, Gonzalo V  escribió:

> perdon, soy nuevo en python
> si  hago un for i in range(3): va a dar 3 pasadas aunque sea true?. La
> idea es que si la conexion es true pase 1 vez y si falla de 3 pasadas.
>

Puedes usar break dentro del bucle.

https://docs.python.org/3.5/reference/simple_stmts.html#the-break-statement


> Muchas gracias!
>
> Saludos,
> Gonzalo
>
> El 26 de agosto de 2015, 6:26, Daπid  escribió:
>
>>
>> 2015-08-26 11:47 GMT+02:00 Gonzalo V :
>>
>>> Tenia entendido que era While true daba el resultado . ¿Cómo lee el
>>> intérprete while 1: Que reintente 1 sola vez?
>>>
>>
>> while algo:
>>
>> se interpreta como:
>>
>> while bool(algo):
>>
>> donde bool() convierte el objeto en True / False.
>>
>>
>>
>>> ¿Cuál sería el código para reintentos controlados (que reintente 3
>>> veces, por ejemplo )?
>>>
>>
>> No uses un while, usa un for:
>>
>> for i in range(3):
>>
>>
>> ___
>> Python-es mailing list
>> Python-es@python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Reintentar

2015-08-26 Por tema Daπid
2015-08-26 13:41 GMT+02:00 Gonzalo V :

> perdon, soy nuevo en python
> si  hago un for i in range(3): va a dar 3 pasadas aunque sea true?. La
> idea es que si la conexion es true pase 1 vez y si falla de 3 pasadas.
> Muchas gracias!
>

¿Aunque qué sea true?

Lo que tienes que hacer es, una vez que la conexión sea establecida, parar.

for i in range(3):
   try:
  req=urllib.request.urlopen(''+line)
  ...
  break
except  urllib.error.HTTPError:
   # Try again.
   pass
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Reintentar

2015-08-26 Por tema Gonzalo V
perdon, soy nuevo en python
si  hago un for i in range(3): va a dar 3 pasadas aunque sea true?. La idea
es que si la conexion es true pase 1 vez y si falla de 3 pasadas.
Muchas gracias!

Saludos,
Gonzalo

El 26 de agosto de 2015, 6:26, Daπid  escribió:

>
> 2015-08-26 11:47 GMT+02:00 Gonzalo V :
>
>> Tenia entendido que era While true daba el resultado . ¿Cómo lee el
>> intérprete while 1: Que reintente 1 sola vez?
>>
>
> while algo:
>
> se interpreta como:
>
> while bool(algo):
>
> donde bool() convierte el objeto en True / False.
>
>
>
>> ¿Cuál sería el código para reintentos controlados (que reintente 3 veces,
>> por ejemplo )?
>>
>
> No uses un while, usa un for:
>
> for i in range(3):
>
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Reintentar

2015-08-26 Por tema Daπid
2015-08-26 11:47 GMT+02:00 Gonzalo V :

> Tenia entendido que era While true daba el resultado . ¿Cómo lee el
> intérprete while 1: Que reintente 1 sola vez?
>

while algo:

se interpreta como:

while bool(algo):

donde bool() convierte el objeto en True / False.



> ¿Cuál sería el código para reintentos controlados (que reintente 3 veces,
> por ejemplo )?
>

No uses un while, usa un for:

for i in range(3):
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Reintentar

2015-08-26 Por tema Yamila Moreno Suárez
i = 0
while i < 3:
 print(i)
 i += 1

output >>
0
1
2




2015-08-26 11:47 GMT+02:00 Gonzalo V :

> Muchas Gracias Andres!
> Tenia entendido que era While true daba el resultado . ¿Cómo lee el
> intérprete while 1: Que reintente 1 sola vez?
> ¿Cuál sería el código para reintentos controlados (que reintente 3 veces,
> por ejemplo )?
> Gracias!
>
> Saludos,
> Gonzalo
>
> 2015-08-26 2:13 GMT-04:00 Oriol Andrés :
>
>> hola, puedes encerrar la funcion en un bucle while.
>> while 1:
>>   response = urlopen
>>   if response.headers.code == 200:
>>  break
>> On Aug 26, 2015 2:02 a.m., "Gonzalo V"  wrote:
>>
>>> Hola a todos.
>>> Tengo un código que hace preguntas a un servidor y algunas veces retorna
>>> un 504, el codigo lo maneja bien pero me gustaría que reintentara.
>>> ¿Alguien me puede ayudar?
>>> el codigo es:
>>> import urllib.request
>>> import urllib.error
>>> from bs4 import BeautifulSoup
>>> import re, csv
>>> from FuncionCsv import LlenarCsv
>>>
>>>
>>>
>>> fhand=open('isbn.txt')
>>> #csvfile=open('ResultadoScrapping.csv', 'w', newline='')
>>> for line in fhand:
>>> try:
>>>req=urllib.request.urlopen(''+line)
>>>resp=req.read()
>>>soup=BeautifulSoup(resp,'html.parser')
>>>
>>> origen=soup.find(string=re.compile("Origen:
>>> ")).find_next().get_text()
>>> nombre=soup.find(name="h1",itemprop="name").get_text()
>>> precioAhora=soup.find(name="p",class_="precioAhora").get_text()
>>> d=soup.find(name="p",class_="stock").get_text()
>>> disp=d.split()
>>> except AttributeError:
>>> disp="no encontrado"
>>> nombre=''
>>> origen=''
>>> precioAhora=''
>>> except urllib.error.HTTPError as e:
>>> if e.getcode()==504:
>>> disp = "sin respuesta del servidor"
>>> print (e.getcode(),disp)
>>> csvfile.close()
>>>
>>> print(line,nombre,origen,precioAhora,disp)
>>> line1=line.split()
>>> LlenarCsv('Resultado.csv',line1,nombre,origen,precioAhora,disp)
>>> cierracsv()
>>>
>>>
>>>
>>>
>>> Saludos,
>>> Gonzalo
>>>
>>> ___
>>> Python-es mailing list
>>> Python-es@python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>> ___
>> Python-es mailing list
>> Python-es@python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>


-- 
Yamila  Moreno Suárez
http://dendarii.es
http://moduslaborandi.net
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Reintentar

2015-08-26 Por tema Gonzalo V
Muchas Gracias Andres!
Tenia entendido que era While true daba el resultado . ¿Cómo lee el
intérprete while 1: Que reintente 1 sola vez?
¿Cuál sería el código para reintentos controlados (que reintente 3 veces,
por ejemplo )?
Gracias!

Saludos,
Gonzalo

2015-08-26 2:13 GMT-04:00 Oriol Andrés :

> hola, puedes encerrar la funcion en un bucle while.
> while 1:
>   response = urlopen
>   if response.headers.code == 200:
>  break
> On Aug 26, 2015 2:02 a.m., "Gonzalo V"  wrote:
>
>> Hola a todos.
>> Tengo un código que hace preguntas a un servidor y algunas veces retorna
>> un 504, el codigo lo maneja bien pero me gustaría que reintentara.
>> ¿Alguien me puede ayudar?
>> el codigo es:
>> import urllib.request
>> import urllib.error
>> from bs4 import BeautifulSoup
>> import re, csv
>> from FuncionCsv import LlenarCsv
>>
>>
>>
>> fhand=open('isbn.txt')
>> #csvfile=open('ResultadoScrapping.csv', 'w', newline='')
>> for line in fhand:
>> try:
>>req=urllib.request.urlopen(''+line)
>>resp=req.read()
>>soup=BeautifulSoup(resp,'html.parser')
>>
>> origen=soup.find(string=re.compile("Origen:
>> ")).find_next().get_text()
>> nombre=soup.find(name="h1",itemprop="name").get_text()
>> precioAhora=soup.find(name="p",class_="precioAhora").get_text()
>> d=soup.find(name="p",class_="stock").get_text()
>> disp=d.split()
>> except AttributeError:
>> disp="no encontrado"
>> nombre=''
>> origen=''
>> precioAhora=''
>> except urllib.error.HTTPError as e:
>> if e.getcode()==504:
>> disp = "sin respuesta del servidor"
>> print (e.getcode(),disp)
>> csvfile.close()
>>
>> print(line,nombre,origen,precioAhora,disp)
>> line1=line.split()
>> LlenarCsv('Resultado.csv',line1,nombre,origen,precioAhora,disp)
>> cierracsv()
>>
>>
>>
>>
>> Saludos,
>> Gonzalo
>>
>> ___
>> Python-es mailing list
>> Python-es@python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


Re: [Python-es] Reintentar

2015-08-25 Por tema Oriol Andrés
hola, puedes encerrar la funcion en un bucle while.
while 1:
  response = urlopen
  if response.headers.code == 200:
 break
On Aug 26, 2015 2:02 a.m., "Gonzalo V"  wrote:

> Hola a todos.
> Tengo un código que hace preguntas a un servidor y algunas veces retorna
> un 504, el codigo lo maneja bien pero me gustaría que reintentara.
> ¿Alguien me puede ayudar?
> el codigo es:
> import urllib.request
> import urllib.error
> from bs4 import BeautifulSoup
> import re, csv
> from FuncionCsv import LlenarCsv
>
>
>
> fhand=open('isbn.txt')
> #csvfile=open('ResultadoScrapping.csv', 'w', newline='')
> for line in fhand:
> try:
>req=urllib.request.urlopen(''+line)
>resp=req.read()
>soup=BeautifulSoup(resp,'html.parser')
>
> origen=soup.find(string=re.compile("Origen:
> ")).find_next().get_text()
> nombre=soup.find(name="h1",itemprop="name").get_text()
> precioAhora=soup.find(name="p",class_="precioAhora").get_text()
> d=soup.find(name="p",class_="stock").get_text()
> disp=d.split()
> except AttributeError:
> disp="no encontrado"
> nombre=''
> origen=''
> precioAhora=''
> except urllib.error.HTTPError as e:
> if e.getcode()==504:
> disp = "sin respuesta del servidor"
> print (e.getcode(),disp)
> csvfile.close()
>
> print(line,nombre,origen,precioAhora,disp)
> line1=line.split()
> LlenarCsv('Resultado.csv',line1,nombre,origen,precioAhora,disp)
> cierracsv()
>
>
>
>
> Saludos,
> Gonzalo
>
> ___
> Python-es mailing list
> Python-es@python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/


[Python-es] Reintentar

2015-08-25 Por tema Gonzalo V
Hola a todos.
Tengo un código que hace preguntas a un servidor y algunas veces retorna un
504, el codigo lo maneja bien pero me gustaría que reintentara.
¿Alguien me puede ayudar?
el codigo es:
import urllib.request
import urllib.error
from bs4 import BeautifulSoup
import re, csv
from FuncionCsv import LlenarCsv



fhand=open('isbn.txt')
#csvfile=open('ResultadoScrapping.csv', 'w', newline='')
for line in fhand:
try:
   req=urllib.request.urlopen(''+line)
   resp=req.read()
   soup=BeautifulSoup(resp,'html.parser')

origen=soup.find(string=re.compile("Origen:
")).find_next().get_text()
nombre=soup.find(name="h1",itemprop="name").get_text()
precioAhora=soup.find(name="p",class_="precioAhora").get_text()
d=soup.find(name="p",class_="stock").get_text()
disp=d.split()
except AttributeError:
disp="no encontrado"
nombre=''
origen=''
precioAhora=''
except urllib.error.HTTPError as e:
if e.getcode()==504:
disp = "sin respuesta del servidor"
print (e.getcode(),disp)
csvfile.close()

print(line,nombre,origen,precioAhora,disp)
line1=line.split()
LlenarCsv('Resultado.csv',line1,nombre,origen,precioAhora,disp)
cierracsv()




Saludos,
Gonzalo
___
Python-es mailing list
Python-es@python.org
https://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/