При парсинге сайта выдает непонятные символы вместо текста
import json
import requests
from bs4 import BeautifulSoup as b
import telebot
def get_first_anime ():
headers={"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"}
url="https://animego.org/anime"
r=requests.get(url=url, headers=headers)
soup=b(r.text, "lxml")
animes=soup.find_all("div", class_="animes-list-item media")
news_dict={}
for article in animes:
animes_title=article.find("div",class_="h5 font-weight-normal mb-1").text.strip()
animes_url = article.select_one('a')['href']
article_id = animes_url.split("-")[-1]
#print(f"{anime_title}|{animes_url}")
news_dict[article_id]={
"animes_title": animes_title,
"animes_url": animes_url
}
with open("animes_dict.json", "w") as file:
json.dump(news_dict, file, indent=4, ensure_ascii=False)
def check_animes_update():
with open("animes_dict.json") as file:
news_dict = json.load(file)
headers={"user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"}
url="https://animego.org/anime"
r=requests.get(url=url, headers=headers)
soup=b(r.text, "lxml")
animes=soup.find_all("div", class_="animes-list-item media")
fresh_news={}
for article in animes:
animes_url = article.select_one('a')['href']
article_id = animes_url.split("-")[-1]
if article_id in news_dict:
continue
else:
animes_title=article.find("div",class_="h5 font-weight-normal mb-1").text.strip()
news_dict[article_id]={
"animes_title": animes_title,
"animes_url": animes_url
}
fresh_news[article_id] ={
"animes_title": animes_title,
"animes_url": animes_url
}
with open("animes_dict.json", "w") as file:
json.dump(news_dict, file, indent=4, ensure_ascii=False)
return fresh_news
def main():
#get_first_anime()
print(check_animes_update())
if __name__=='__main__':
main()
вот что выдает, как вместо этих символов получить нормальный текст?
"2184": {
"animes_title": "���������� ����! ���������",
"animes_url": "https://animego.org/anime/slushaytes-papu-pokkapoka-2184"
},
Ответы (1 шт):
Автор решения: Nonen_Hook
→ Ссылка
Я так понимаю вы записываете данные в файл JSON, поскольку вы не указали кодировку записи русские символы просто записываются некорректно.
Чтобы исправить проблему, читайте и записывайте файл в кодировке UTF-8
Пример записи:
with open("animes_dict.json", "w", encoding="utf-8") as file:
# Код для записи
Пример чтения:
with open("animes_dict.json", "r", encoding="utf-8") as file:
# Код для чтения