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