2009-10-23 7 views
1

Comment calculer la taille d'une page Web (URL) en utilisant Python. J'ai essayé urllib2 et en saisissant l'en-tête content-length mais il n'était pas présent.Calculer la taille de la page Web en python

import urllib2 
url = 'http://www.google.com/' 
r = urllib2.urlopen(url) 
#Not sure what to do from here 

Répondre

5

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.

3

est facultative; utilisez-le s'il est présent, pour réduire l'utilisation de la bande passante, mais si le serveur ne l'envoie pas (ou si vous ne lui faites pas confiance pour une raison quelconque), vous devrez récupérer la ressource entière et calculer sa longueur.

print len(r.read()) 
0

Voici comment je l'ai fait. Voir le code ci-dessous.

import urllib2 
url = 'http://www.ueseo.org' 
r = urllib2.urlopen(url) 
print len(r.read()) 
Questions connexes