import urllib
print urllib.urlopen('http://www.reefgeek.com/equipment/Controllers_&_Monitors/Neptune_Systems_AquaController/Apex_Controller_&_Accessories/').read()
El script anterior funciona y devuelve los resultados esperados, mientras que:urllib2.urlopen() vs urllib.urlopen() - urllib2 arroja 404 mientras que urllib funciona! ¿POR QUÉ?
import urllib2
print urllib2.urlopen('http://www.reefgeek.com/equipment/Controllers_&_Monitors/Neptune_Systems_AquaController/Apex_Controller_&_Accessories/').read()
lanza el siguiente error:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.5/urllib2.py", line 124, in urlopen
return _opener.open(url, data)
File "/usr/lib/python2.5/urllib2.py", line 387, in open
response = meth(req, response)
File "/usr/lib/python2.5/urllib2.py", line 498, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.5/urllib2.py", line 425, in error
return self._call_chain(*args)
File "/usr/lib/python2.5/urllib2.py", line 360, in _call_chain
result = func(*args)
File "/usr/lib/python2.5/urllib2.py", line 506, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 404: Not Found
¿Alguien sabe qué es esto? Estoy ejecutando esto desde la computadora portátil en mi red doméstica sin configuración de proxy, solo directamente desde mi computadora portátil al enrutador y luego a la www.
que es bueno saber, por curiosidad, cuando escribo esta URL en mi navegador, también funciona. ¿Esto significa que el navegador también está recibiendo un 404 pero solo muestra el contenido como lo hace urllib? –
@Jerry Sí, eso es lo que esto significa. Puede verificar esto con Firebug o Safari/Chrome's Web Inspector. –
Tengo Firebug y lo había comprobado, pero no vi nada que indicara un 404 - ¿hay algo especial que hacer? Por curiosidad morbosa, ¿por qué los navegadores toleran esos estándares tan pobres? ¿Por qué no simplemente indicar que no pudo encontrar el archivo? ¿Es este un truco del sitio que utiliza para frustrar los bots? ¿Devuelve un 404 con contenido sabiendo que el navegador mostrará el contenido y la mayoría de los bots seguirán adelante? –