1

Не могу записать файл в нормальной кодировке, получаю знаки типа \u0447

import requests
import simplejson
from fake_useragent import UserAgent
import codecs
# -*- coding: utf8 -*-

url = 'http://ru.wikipedia.org/w/api.php?'

#/w/api.php?action=parse&format=json&page=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F

action = 'action=parse'
format = '&format=json'
#!!!!
page = '&page=Литий'
url = url+action+format+page







response = requests.get(url, headers={'User_Agent': UserAgent().chrome})

json = response.text#.decode(encoding="unicode_escape"

print ('response')
print (response)

f1 = open('rezult.txt','w', encoding = "utf-8")

with open('rezult.txt','w',encoding = 'utf-8') as f:
    f.write(json) #записываем все в один файл


f1.close()

Теперь код выглядит так:

import requests
import simplejson
from fake_useragent import UserAgent
import codecs
import json
#from json import loads
# -*- coding: utf8 -*-

url = 'http://ru.wikipedia.org/w/api.php?'

#/w/api.php?action=parse&format=json&page=%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F

action = 'action=parse'
format = '&format=json'
#!!!!
page = '&page=Литий'
url = url+action+format+page







response = requests.get(url, headers={'User_Agent': UserAgent().chrome})


print ('response')
print (response)

f1 = open('rezultat.txt','w', encoding = "utf-8")

with open('rezultat.txt','w',encoding = 'utf-8') as f:
    res = str(json.loads(response.text))
    f.write(res) #записываем все в один файл


f1.close()

но результирующий файл так выглядит: введите сюда описание изображения

1 Answers1

2

Что по-вашему, делает этот кусок кода?:

json = response.text

Если вы хотите получить объект в формате json, то воспользуйтесь методом load, и все у вас будет нормально отображаться:

res = json.loads(response.text)
print(res)

На выходе:

{'parse': {'title': 'Литий', 'pageid': 10217, 'revid': 96170283, 'text': {'*': '<div
class="mw-parser-output"><div class="dablink">Запрос «Lithium»&#32;перенаправляется 
сюда; см. также <a  href="/wiki/Lithium_(%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D1%8F)"
class="mw-disambig" title="Lithium (значения)">другие значения</a> .....

UPDATE: Ниже полный рабочий код

import requests
import json

url = 'http://ru.wikipedia.org/w/api.php?'

action = 'action=parse'
format = '&format=json'
page = '&page=Литий'
url = url+action+format+page

response = requests.get(url)
res = json.loads(response.text)
print(res)

with open('rezultat.txt','w',encoding = 'utf-8') as f:
    json.dump(res, f, ensure_ascii=False)
strawdog
  • 25,888