Рассчитать размер веб-страницы в Python - PullRequest
2 голосов
/ 23 октября 2009

Как мне рассчитать размер веб-страницы (URL) с помощью Python. Я попробовал urllib2 и взял заголовок content-length, но его не было.

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

Ответы [ 3 ]

5 голосов
/ 23 октября 2009

Когда вы используете urlopen, вы собираетесь запрашивать все содержимое (запрос HTTP GET), поэтому поиск необязательного заголовка длины содержимого не так уж и полезен, как только вы пойдете таким образом (все в порядке, сохраните у вас немного времени и памяти, но вы наложили избегаемую нагрузку на сервер и сеть). Тем не менее, как указывает существующий ответ, len из read() результата urlopen - это способ, который будет работать, даже если длина содержимого отсутствует.

Увы, urllib2 не поддерживает HTTP-метод HEAD. Чтобы попробовать HEAD, вы должны использовать модуль нижнего уровня httplib (установить соединение с сервером, вызвать его метод request('HEAD', url), вызвать его getresponse, чтобы получить объект HttpResponse, вызвать getheader метод для последнего, чтобы получить заголовок длины контента ... вы понимаете, почему я говорю, что модуль является более низким уровнем ;-). Если вы имеете дело с очень большими страницами и разумными серверами (те, которые устанавливают заголовок длины контента), это, хотя и грязно, может быть важной оптимизацией.

3 голосов
/ 23 октября 2009

Content-Length необязательно; используйте его, если он есть, чтобы сократить использование полосы пропускания, но если сервер его не отправляет (или вы по какой-то причине не доверяете ему), вам придется извлечь весь ресурс и рассчитать его длину.

print len(r.read())
0 голосов
/ 22 мая 2011

Вот как я это сделал. Смотрите код ниже.

import urllib2
url = 'http://www.ueseo.org'
r = urllib2.urlopen(url)
print len(r.read())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...