libreria from espaƱol python html urlopen

from - Python comprueba si existe sitio web



urllib.urlencode python 3 (6)

Prueba este:

import urllib2 website=''https://www.allyourmusic.com'' try: response = urllib2.urlopen(website) if response.code==200: print("site exists!") else: print("site doesn''t exists!") except urllib2.HTTPError, e: print(e.code) except urllib2.URLError, e: print(e.args)

Quería comprobar si existe un determinado sitio web, esto es lo que estoy haciendo:

user_agent = ''Mozilla/20.0.1 (compatible; MSIE 5.5; Windows NT)'' headers = { ''User-Agent'':user_agent } link = "http://www.abc.com" req = urllib2.Request(link, headers = headers) page = urllib2.urlopen(req).read() - ERROR 402 generated here!

Si la página no existe (error 402, o cualquier otro error), ¿qué puedo hacer en la línea page = ... para asegurarme de que la página que estoy leyendo salga?


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

  • 1xx - informativo
  • 2xx - el éxito
  • 3xx - redirección
  • 4xx - error del cliente
  • 5xx - error del servidor

Si desea verificar si existe una página y no desea descargar la página completa, debe usar la Solicitud de encabezado :

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, solo realice una solicitud normal y verifique el código de estado. Ejemplo usando requests :

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

Ver también temas similares:

Espero que ayude.


Puedes usar la solicitud HEAD en lugar de GET. Solo descargará el encabezado, pero no el contenido. A continuación, puede comprobar el estado de respuesta de los encabezados.

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

o puedes usar 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 puedes usar 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'')


código:

a="http://www.example.com" try: print urllib.urlopen(a) except: print a+" site does not exist"


def isok(mypath): try: thepage = urllib.request.urlopen(mypath) except HTTPError as e: return 0 except URLError as e: return 0 else: return 1


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 manejadores predeterminados manejan las redirecciones (códigos en el rango 300), y los códigos en el rango 100-299 indican el éxito, generalmente solo verá los códigos de error en el rango 400-599. Source