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.HTTPError, e:
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.