Форум сайта python.su
помогите пожалуйста разобраться с ошибкой
следующим скриптом успешно загружаю из сети файл index.html и успешно записываю его в текстовый файл(сам скрипт находится на жёстком диске):
import requests addr = requests.get('http://fh79272k.bget.ru/py_test/index.html') #addr = requests.get('http://prozaik.16mb.com/works/weekend_projects/site_himmler_homepage/index.php') print(addr.status_code) print(addr.text) try: f2 = open("text2.txt", 'w') except Exception: print('open error') except: print('error') else: try: f2.write(addr.text) except Exception: print('write error') except: print('error') else: print('write OK') finally: f2.close()
import requests #addr = requests.get('http://fh79272k.bget.ru/py_test/index.html') addr = requests.get('http://prozaik.16mb.com/works/weekend_projects/site_himmler_homepage/index.php') print(addr.status_code) print(addr.text) try: f2 = open("text2.txt", 'w') except Exception: print('open error') except: print('error') else: try: f2.write(addr.text) except Exception: print('write error') except: print('error') else: print('write OK') finally: f2.close()
write error
Отредактировано zlodiak (Фев. 17, 2014 14:38:26)
Офлайн
попробуйте записывать так:
f2.write(addr.text.encode('utf-8'))
Отредактировано alexsis (Фев. 17, 2014 19:15:22)
Офлайн
Вы сами себе злобный буратино
уберите эту хрень
и увидите какой реально exception упалexcept Exception: print('write error') except: print('error')
Офлайн
PanovSergey
Вы сами себе злобный буратино уберите эту хрень
import requests #addr = requests.get('http://fh79272k.bget.ru/py_test/index.html') addr = requests.get('http://prozaik.16mb.com/works/weekend_projects/site_himmler_homepage/index.php') print(addr.status_code) print(addr.text) try: f2 = open("text2.txt", 'w') except Exception: print('open error') except: print('error') else: f2.write(addr.text) finally: f2.close()
Traceback (most recent call last):
File “C:\VINT\OPENSERVER\OpenServer\domains\localhost\python\parse_html\1\dombook.py”, line 16, in <module>
f2.write(addr.text)
File “C:\Python33\lib\encodings\cp1251.py”, line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)
UnicodeEncodeError: ‘charmap’ codec can't encode characters in position 87-91: character maps to <undefined>
Офлайн
Подозреваю, что requests не смог определить кодировку страницы и выставил ISO-8859-1
Попробуйте изменить функцию get_encoding_from_headers в файле requests.utils, закоментируйте две последние строки функции.
Но правильнее все же писать в файл байты:
with open("text.html", "wb") as f2: f2.write(addr.content)
import shutil import requests addr = requests.get('http://prozaik.16mb.com/works/weekend_projects/site_himmler_homepage/index.php', stream=True) with open("text.html", "wb") as f2: shutil.copyfileobj(addr.raw, f2)
Офлайн