Foros del Web » Programando para Internet » Python »

Accept Header, urllib2

Estas en el tema de Accept Header, urllib2 en el foro de Python en Foros del Web. Hola a todos, a ver si alguién me puede ayudar un poco con esto: Estoy programando un crawler con python y para descargar las páginas ...
  #1 (permalink)  
Antiguo 08/12/2012, 23:18
 
Fecha de Ingreso: diciembre-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Accept Header, urllib2

Hola a todos, a ver si alguién me puede ayudar un poco con esto:
Estoy programando un crawler con python y para descargar las páginas estoy usando la biblioteca urllib2, bueno lo que quiero es que el crawler solo descargue págicas con MIME-type text/html así que hago uso de la cabecera HTTP "Accept", pero cuando hago una petición a una ruta que contiene un archivo pdf, el resultado es el siguiente.

Código PHP:
#El objeto VerboseHTTPHandler que le paso a urllib2.build_opener() es solo una
#clase que hereda de HTTPHandler y que sobreescribe algunos métodos, todo
#esto con el fin de poder ver en la salida estándar la 
#información de la Petición y la Respuesta, nada más.

opener urllib2.build_opener(VerboseHTTPHandler)
url 'http://www.ejemplo.com/documento.pdf'
agent 'Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)'
mime_type 'text/html'
try:
    
request urllib2.Request(url)
    
request.add_header('Accept'mime_type)
    
request.add_header('User-Agent'agent)
    
response opener.open(request)
except urllib2.HTTPErrore:
    
pass
except ValueError
e:
    print 
'Revise la url ingresada'

print response.read() 
El resultado es:

-------------------- Request --------------------
GET /libros/fahrenheit_451.pdf HTTP/1.1
Accept-Encoding: identity
Host: www.ddooss.org
Connection: close
Accept: text/html
User-Agent: Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)
-------------------- Response --------------------
HTTP/1.1 200 OK
Date: Sun, 09 Dec 2012 05:03:09 GMT
Server: Apache
Last-Modified: Sun, 30 Jan 2011 09:27:34 GMT
ETag: "19b726fb-74fcb-49b0ce8c54d80"
Accept-Ranges: bytes
Content-Length: 479179
Vary: Accept-Encoding,User-Agent
Connection: close
Content-Type: application/pdf
. . .

donde . . . es una larga cadena con caracteres especiales que es el código binario del pdf.
Yo esperaba que al enviar el encabezado Accept: text/html el servidor al que hago la petición debería regresarme un codigo '406 (not acceptable)'.
¿Es que acaso el enviar esta cabecera no obliga al servidor a devolver dicha respuesa?
¿Qué otra opción tengo?

Gracias por su tiempo.
  #2 (permalink)  
Antiguo 08/12/2012, 23:42
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Accept Header, urllib2

Cita:
Iniciado por Cobol Ver Mensaje
Yo esperaba que al enviar el encabezado Accept: text/html el servidor al que hago la petición debería regresarme un codigo '406 (not acceptable)'.
No, no tiene por que.

Cita:
Iniciado por Cobol Ver Mensaje
¿Es que acaso el enviar esta cabecera no obliga al servidor a devolver dicha respuesa?
Exacto. El servidor no esta obligado en confiar en las cabeceras.

Cita:
Iniciado por Cobol Ver Mensaje
¿Qué otra opción tengo?
Si, si lo prefieres puedes leer las cabeceras de respuesta para ver si lo que buscas es efectivamente html y no pdf.
  #3 (permalink)  
Antiguo 08/12/2012, 23:51
 
Fecha de Ingreso: diciembre-2012
Mensajes: 5
Antigüedad: 12 años
Puntos: 0
Respuesta: Accept Header, urllib2

Muchas gracias.

Etiquetas: gui, header, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:23.