Python: guardar una página web grande en el archivo

Permítanme comenzar diciendo, no soy nuevo en programación pero soy muy nuevo en Python.

He escrito un programa usando urllib2 que solicita una página web que luego me gustaría guardar en un archivo. La página web es de unos 300 KB, lo que no me parece particularmente grande, pero parece ser suficiente para causarme problemas, así que lo llamo "grande". Estoy usando una llamada simple para copiar directamente desde el objeto devuelto porurlopen en el archivo:

file.write(webpage.read())

pero se quedará solo unos minutos, tratando de escribir en el archivo y eventualmente recibo lo siguiente:

Traceback (most recent call last):
  File "program.py", line 51, in <module>
    main()
  File "program.py", line 43, in main
    f.write(webpage.read())
  File "/usr/lib/python2.7/socket.py", line 351, in read
    data = self._sock.recv(rbufsize)
  File "/usr/lib/python2.7/httplib.py", line 541, in read
    return self._read_chunked(amt)
  File "/usr/lib/python2.7/httplib.py", line 592, in _read_chunked
    value.append(self._safe_read(amt))
  File "/usr/lib/python2.7/httplib.py", line 649, in _safe_read
    raise IncompleteRead(''.join(s), amt)
httplib.IncompleteRead: IncompleteRead(6384 bytes read, 1808 more expected)

No sé por qué esto debería causar tanto dolor al programa.

EDIT |

aquí es cómo estoy recuperando la página

jar = cookielib.CookieJar()

cookie_processor = urllib2.HTTPCookieProcessor(jar);

opener = urllib2.build_opener(cookie_processor)
urllib2.install_opener(opener)

requ_login = urllib2.Request(LOGIN_PAGE,
                             data = urllib.urlencode( { 'destination' : "", 'username' : USERNAME, 'password' :  PASSWORD } ))

requ_page = urllib2.Request(WEBPAGE)    
try:
    #login
    urllib2.urlopen(requ_login)

    #get desired page
    portfolio = urllib2.urlopen(requ_page)
except urllib2.URLError as e:
    print e.code, ": ", e.reason

Respuestas a la pregunta(1)

Su respuesta a la pregunta