Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/12/2012, 23:18
Cobol
 
Fecha de Ingreso: diciembre-2012
Mensajes: 5
Antigüedad: 11 años, 4 meses
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.