Lorsque vous utilisez urlopen
, vous allez demander tout le contenu (une requête HTTP GET) si la recherche de l'en-tête en option longueur de contenu ne sont pas d'une grande utilité, une fois que vous êtes allé de cette façon (il est OK , vous fait gagner du temps et de la mémoire, mais vous avez imposé une charge évitable sur le serveur et le réseau). Pourtant, comme la réponse existante l'indique, le len
du résultat read()
du résultat urlopen
est la façon dont cela fonctionnera même si la longueur du contenu est manquante. Malheureusement, urllib2 ne supporte pas la méthode http HEAD. Pour essayer HEAD, vous devez utiliser le module de niveau inférieur httplib (établir une connexion au serveur, appeler sa méthode request('HEAD', url)
, appeler son getresponse
pour obtenir un objet HttpResponse, appeler la méthode getheader
sur ce dernier pour obtenir l'en-tête de longueur de contenu. .. vous voyez pourquoi je dis que le module est de niveau inférieur ;-). Si vous avez affaire à des pages très volumineuses et à des serveurs sensibles (ceux qui définissent l'en-tête de la longueur du contenu), cela pourrait être une optimisation importante.