Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
34 / 20 / 9
Регистрация: 29.08.2015
Сообщений: 87

Записать cp2151 в файл

02.09.2015, 20:48. Показов 3883. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! В консоли html код отображается нормально, но когда пытаемся записать, выдает такую ошибку:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 699-707: ordinal not in range(128)

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/usr/bin/python
# -*- coding: cp1251 -*-
 
import requests
import re
 
def auth(username,password):
    get = requests.get('http://vk.com/')
    print get.text
    f = open('log.txt', 'w')
    f.write(get.text)
    f.close()
    
auth(1,1)
Подскажите, пожалуйста, что поправить. Поиск не привел к решению, может быть, плохо искал...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.09.2015, 20:48
Ответы с готовыми решениями:

Создать текстовый файл, записать туда информацию. прочесть, серилизовать и записать байтовый поток в другой файл
Привет....помогите пожалуйста, очень надо...и очень срочно. несколько заданий по яве: 1. создать текстовый файл, записать туда...

Сформировать текстовый файл записать в него 20 случайных чисел от-10 до 10 по 1 на строку записать выходной файл умножив
День добрый. Убил день но так и не смог сделать задание так или иначе делаю но получается херня если не сложно прошу помочь решением...

Создать структуру из двух строковых полей. Записать в файл n компонент типа этой структуры. В другой файл записать строк
бинарные файлы.Создать структуру из двух строковых полей. Записать в файл n компонент типа этой структуры. В другой файл записать строки,...

11
0 / 0 / 1
Регистрация: 02.09.2015
Сообщений: 2
02.09.2015, 21:14
f.write(get.text.encode("CP1251"))
0
34 / 20 / 9
Регистрация: 29.08.2015
Сообщений: 87
02.09.2015, 21:23  [ТС]
Так пишет, но криво:
HTML5
1
<title>Ëàñêàâî ïðîñèìî! | ÂÊîíòàêòi</title>
К тому же, обрабатывать кириллицу внутри программы не получается.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/python
# -*- coding: cp1251 -*-
 
import requests
import re
 
def auth(username,password):
    get = requests.get('http://vk.com/')
    html = get.text.encode("CP1251")
    f = open('log.txt', 'w')
    f.write(html)
    f.close()
    
    if 'а' in html:
        print 'Works'
    
auth(1,1)
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
03.09.2015, 07:08
Два вопроса.
1. В какой кодировке текст приходит?
2. В какой вам надо записать?

Дополнительно - какая версия питона.
0
34 / 20 / 9
Регистрация: 29.08.2015
Сообщений: 87
03.09.2015, 09:54  [ТС]
1. Windows-1251
2. В любой подойдет Но я подразумеваю, что записать должен тоже в Windows-1251, или я ошибаюсь и нужно как-то принудительно указать кодировку при сохранении?
Python 2.7
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
03.09.2015, 10:32
Если "в любой", то вам надо сначала декодировать из cp1251 в питоновскую дефолтную (а это юникод) и закодировать в любую.
Во третьем питоне можно указывать кодировку при открытии файла (open), во втором использовать codecs.open.
Если сохраняете в той же, что получаете - должно работать.
0
34 / 20 / 9
Регистрация: 29.08.2015
Сообщений: 87
03.09.2015, 10:55  [ТС]
К сожалению, и этот вариант не дал решения.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/usr/bin/python
# -*- coding: cp1251 -*-
 
import requests
import re
import codecs
 
def auth(username,password):
    get = requests.get('http://vk.com/')
    html = get.text
    f = codecs.open('log.txt', 'w', 'cp1251')
    f.write(html)
    f.close()
    
    if 'а' in html:
        print 'Works'
    
auth(1,1)
Прежняя ошибка:

Code
1
2
3
4
5
6
Traceback (most recent call last):
  File "auth.py", line 18, in <module>
    auth(1,1)
  File "auth.py", line 15, in auth
    if '�' in html:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
03.09.2015, 11:13
Воспроизвёл ваш код, с codecs.open.
Работает на ура.
0
34 / 20 / 9
Регистрация: 29.08.2015
Сообщений: 87
03.09.2015, 11:56  [ТС]
Даже не знаю... Пробую и на Linux, и на Windows. Все равно ошибка. Если не затруднит, попробуйте запустить мои исходники.
Миниатюры
Записать cp2151 в файл   Записать cp2151 в файл  
Вложения
Тип файла: zip vk.zip (6.6 Кб, 0 просмотров)
0
34 / 20 / 9
Регистрация: 29.08.2015
Сообщений: 87
03.09.2015, 14:27  [ТС]
Нет, умом это не понять. Работает так (выводит: "Works"), но черт возьми... это ведь не выход, делать лишнее действие.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/python
# -*- coding: cp1251 -*-
 
import requests
import re
import codecs
 
 
def auth(username,password):
    get = requests.get('http://vk.com/')
    html = get.text
    f = codecs.open('log.txt', 'w', 'cp1251')
    f.write(html)
    f.close()
    
    f = open('log.txt').read()
    
    if 'а' in f:
        print 'Works'
    
auth(1,1)
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
03.09.2015, 14:40
А зачем вы героически читаете из файла то, что записали?
Советую посмотреть в отладке, что там у вас в get.text на самом деле. В памяти там, кстати, юникод - видимо, при чтении он декодит.
0
34 / 20 / 9
Регистрация: 29.08.2015
Сообщений: 87
03.09.2015, 16:35  [ТС]
Все-таки доделал, то что хотел, несмотря на то, что сохраняет все рано как-то странно. Gedit, Geany отображают кириллицу в сохраненной странице кракозяблами (наверное, считают, что файл сохранен в utf-8), но браузер и стандартный блокнот видят файл корректно и самое главное, что с кириллицей можно работать в коде.

Может быть, кому-то будет нужна авторизация. Спасибо всем, кто помог!

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#!/usr/bin/python
# -*- coding: cp1251 -*-
 
import requests
import re
 
global vk
 
def preg(exp,source):
    c = re.compile(exp)
    c = re.findall(c,source)
    return c[0]
 
 
def auth(username,password):
    head = {'User-Agent':   'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0',
    'Connection': 'keep-alive',
    'Accept-Language''ru,en;q=0.5'}
    get = requests.get('http://vk.com/',headers=head)
    html = get.text.encode('cp1251')
    cook = get.cookies  
    
    ip_h = preg('name="ip_h" value="(.*?)"',html)
    lg_h = preg('name="lg_h" value="(.*?)"',html)
    
    data_post = {'ip_h':ip_h, 'lg_h': lg_h, 'email': username, 'pass': password, 'act': 'login', '_origin': 'http://vk.com', 'expire': ''}
    
    get = requests.post('https://login.vk.com/?act=login',data=data_post,headers=head,cookies=cook,allow_redirects=False)
    html = get.text.encode('cp1251')
    cook = get.cookies
    
    return cook
    
def getpage(url,filename):
    get = requests.get(url,cookies=vk)
    html = get.text.encode('cp1251')
    f = open(filename, 'w')
    f.write(html)
    f.close()
    
 
vk = auth('user','pass') # авторизуемся
getpage("http://vk.com/feed","feed.html") # скачиваем страницу
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.09.2015, 16:35
Помогаю со студенческими работами здесь

Создать структуру из двух строковых полей. Записать в файл n компонент типа этой структуры. В другой файл записать строк
Бинарные файлы. Создать структуру из двух строковых полей. Записать в файл n компонент типа этой структуры. В другой файл записать строки,...

В файл записать 10 чисел. Создать новый файл, в который записать только четные числа.
В файл записать 10 чисел. Создать новый файл, в который записать только четные числа.

Надо записать в файл, считать из файла, и снова записать в отдельный файл
Надо сделать так, чтобы я ввел n, и это количество элементов запишется в файл input.txt, и потом производится считывание массива из только...

нужно зашифровать текст в файле с помощю чисел, записать шифр в другой файл, потом разшифровать и записать разшифрованый текст в третий файл
нужно зашифровать текст в файле с помощю чисел, записать шифр в другой файл, потом разшифровать и записать разшифрованый текст в третий файл

Два числа записать в файл input, сравнить эти числа и если A < B записать в файл Output этот знак
Решаю такую задачу: нужно два числа записать в файл input потом сравнить эти числа, и если A &lt; B записать в файл Output этот знак. Часть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru