Python: сохранение большой веб-страницы в файл

Позвольте мне начать с того, что я не новичок в программировании, но очень новичок в python.

Я написал программу, использующую urllib2, которая запрашивает веб-страницу, которую я затем хотел бы сохранить в файл. Размер веб-страницы составляет около 300 КБ, что не кажется мне особенно большим, но, похоже, достаточно, чтобы доставить мне проблемы, поэтому я называю ее "большой". Я использую простой вызов для копирования непосредственно из объекта, возвращенного из urlopen , в файл:

file.write (webpage.read ())

, но он просто будет сидеть в течение нескольких минут, пытаясь записать в файл, и в конце концов я получите следующее:

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)

Я не знаю, почему это должно доставить программе столько неприятностей?


РЕДАКТИРОВАТЬ |

вот как я получаю страницу

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
5
задан Justin Smith 22 November 2011 в 19:03
поделиться