urllib2.urlopen
возвращает файл-подобный объект, и вы можете (по крайней мере, теоретически) .read(N)
из такого объекта ограничить объем данных, возвращаемых максимум в N байтов.
Этот подход не полностью защищен от ошибок, потому что активно враждебный сайт может пойти на все, чтобы обмануть полученного достаточно надежного, например, открыватель по умолчанию для urllib2; в этом случае вам нужно будет внедрить и установить свой собственный нож, который знает, как защитить себя от таких атак (например, получать не более чем МБ за раз из открытого сокета и т. д. и т. д.).