Python: salvando uma grande página da Web em um arquivo
Deixe-me começar dizendo: não sou novo em programação, mas sou muito novo em pytho
Eu escrevi um programa usando o urllib2 que solicita uma página da web que eu gostaria de salvar em um arquivo. A página da Web tem cerca de 300 KB, o que não me parece particularmente grande, mas parece ser suficiente para me causar problemas, por isso estou chamando de 'grande'. Estou usando uma chamada simples para copiar diretamente do objeto retornado deurlopen
no arquivo:
file.write(webpage.read())
mas fica parado por alguns minutos, tentando gravar no arquivo e, eventualmente, recebo o seguinte:
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)
Não sei por que isso deve causar tanto sofrimento ao programa?
EDIT |aqui é como estou recuperando a 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