Saltar al contenido

Python comprueba si existe un sitio web

Luego de investigar con especialistas en la materia, programadores de deferentes áreas y profesores dimos con la respuesta al problema y la plasmamos en esta publicación.

Solución:

Puede usar la solicitud HEAD en lugar de GET. Solo descargará el encabezado, pero no el contenido. Luego puede verificar el estado de respuesta de los encabezados.

Para python 2.7.x, puede usar httplib:

import httplib
c = httplib.HTTPConnection('www.example.com')
c.request("HEAD", '')
if c.getresponse().status == 200:
   print('web site exists')

o urllib2:

import urllib2
try:
    urllib2.urlopen('http://www.example.com/some_page')
except urllib2.HTTPError, e:
    print(e.code)
except urllib2.URLError, e:
    print(e.args)

o para 2.7 y 3.x, puede instalar requests

import requests
request = requests.get('http://www.example.com')
if request.status_code == 200:
    print('Web site exists')
else:
    print('Web site does not exist') 

Es mejor verificar que el código de estado sea < 400, como se hizo aquí. Esto es lo que significan los códigos de estado (tomado de wikipedia):

  • 1xx – informativo
  • 2xx – éxito
  • 3xx – redirección
  • 4xx – error del cliente
  • 5xx – Error del Servidor

Si desea verificar si la página existe y no desea descargar toda la página, debe usar Head Request:

import httplib2
h = httplib2.Http()
resp = h.request("http://www.google.com", 'HEAD')
assert int(resp[0]['status']) < 400

tomado de esta respuesta.

Si desea descargar la página completa, simplemente haga una solicitud normal y verifique el código de estado. Ejemplo usando solicitudes:

import requests

response = requests.get('http://google.com')
assert response.status_code < 400

Ver también temas similares:

  • ¿Script de Python para ver si existe una página web sin descargar toda la página?
  • Verificar si un enlace está muerto o no usando Python sin descargar la página web
  • ¿Cómo se envía una solicitud HEAD HTTP en Python 2?
  • Hacer una solicitud HTTP HEAD con urllib2 desde Python 2

Espero que ayude.

from urllib2 import Request, urlopen, HTTPError, URLError

user_agent = 'Mozilla/20.0.1 (compatible; MSIE 5.5; Windows NT)'
headers =  'User-Agent':user_agent 
link = "http://www.abc.com/"
req = Request(link, headers = headers)
try:
        page_open = urlopen(req)
except HTTPError, e:
        print e.code
except URLError, e:
        print e.reason
else:
        print 'ok'

Para responder al comentario de unutbu:

Debido a que los controladores predeterminados manejan redireccionamientos (códigos en el rango 300) y los códigos en el rango 100-299 indican éxito, por lo general solo verá códigos de error en el rango 400-599. Fuente

Si para ti ha resultado de utilidad este post, te agradeceríamos que lo compartas con el resto seniors y nos ayudes a difundir nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *