Q:

Ошибка кодировки. Python

Помогите пожалуйста, я решил изучать парсинг данных и написал свой первый парсер при помощи bs4 и requests,после исполнения скрипта все русские символы почему-то превращаются в иероглефы. Если что в настройках винды стоит параметр:'использовать utf-8 для поддержки языка во всем мире'. Вот код:
import requests
from bs4 import BeautifulSoup

URL = 'https://auto.ru/moskva/cars/lexus/new/'
HEADERS = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko', 'accept' : '*/*'}

def get_html(url, params=None):
    r = requests.get(URL, headers = HEADERS, params = params)
    return r

def get_content(html):
    soup = BeautifulSoup(html, 'html.parser')
    items = soup.find_all('div', class_= "ListingItemGroup__column ListingItemGroup__column_left")
    cars = []
    for item in items:
        cars.append({
            'title' : item.find('a', class_='Link ListingItemTitle-module__link').get_text(),
            item.find('dd', class_='ListingItemGroup__techSummaryName').get_text() : item.find('dt', class_='ListingItemGroup__techSummaryValue').get_text(),
            'price' : item.find('div', class_='ListingItemGroup__price').get_text()

        })
        f = open('test.txt', 'a+')
        f.write(str(cars))
        f.close()
    print(cars)

def parse():
    html = get_html(URL)
    if html.status_code == 200:
        get_content(html.text)
    else:
        print('Что-то пошло не так :(')

parse()

И вот, что выдает интерпретатор:
[{'title': 'Lexus RX IV Ð\xa0ÐµÑ\x81Ñ\x82Ð°Ð¹Ð»Ð¸Ð½Ð³', 'Ð\x9cÐ¾Ñ\x82Ð¾Ñ\x80': '2.0 Ð» / Ð±ÐµÐ½Ð·Ð¸Ð½', 'price': '3â\x80\x89468â\x80\x89000 â\x80\x93 4â\x80\x89785â\x80\x89000 â\x82½'}, {'title': 'Lexus LX III Ð\xa0ÐµÑ\x81Ñ\x82Ð°Ð¹Ð»Ð¸Ð½Ð³ 2', 'Ð\x9cÐ¾Ñ\x82Ð¾Ñ\x80': '4.5, 5.7 Ð» / Ð±ÐµÐ½Ð·Ð¸Ð½, Ð´Ð¸Ð·ÐµÐ»Ñ\x8c', 'price': '7â\x80\x89023â\x80\x89000 â\x80\x93 9â\x80\x89021â\x80\x89000 â\x82½'}, {'title': 'Lexus GX II Ð\xa0ÐµÑ\x81Ñ\x82Ð°Ð¹Ð»Ð¸Ð½Ð³ 2', 'Ð\x9cÐ¾Ñ\x82Ð¾Ñ\x80': '4.6 Ð» / Ð±ÐµÐ½Ð·Ð¸Ð½', 'price': '5â\x80\x89215â\x80\x89000 â\x82½'}, {'title': 'Lexus NX I Ð\xa0ÐµÑ\x81Ñ\x82Ð°Ð¹Ð»Ð¸Ð½Ð³', 'Ð\x9cÐ¾Ñ\x82Ð¾Ñ\x80': '2.0 Ð» / Ð±ÐµÐ½Ð·Ð¸Ð½', 'price': '2â\x80\x89394â\x80\x89000 â\x80\x93 4â\x80\x89708â\x80\x89000 â\x82½'}, {'title': 'Lexus ES VII', 'Ð\x9cÐ¾Ñ\x82Ð¾Ñ\x80': '2.5, 3.5 Ð» / Ð±ÐµÐ½Ð·Ð¸Ð½', 'price': '2â\x80\x89986â\x80\x89000 â\x80\x93 4â\x80\x89450â\x80\x89000 â\x82½'}, {'title': 'Lexus RX IV', 'Ð\x9cÐ¾Ñ\x82Ð¾Ñ\x80': '3.5 Ð» / Ð±ÐµÐ½Ð·Ð¸Ð½', 'price': '4â\x80\x89386â\x80\x89000 â\x82½'}, {'title': 'Lexus UX I', 'Ð\x9cÐ¾Ñ\x82Ð¾Ñ\x80': '2.0 Ð» / Ð±ÐµÐ½Ð·Ð¸Ð½', 'price': '2â\x80\x89585â\x80\x89000 â\x82½'}]

A:

requests не угадал кодировку
>>> r.headers['content-type']
'text/html'
>>> r.encoding
'ISO-8859-1'

ему нужно подсказать
r.encoding='utf-8'

и r.text теперь читает по-русски. 
Кодировка этой странички записанна только в meta, а её requests не смотрит.  Чтоб bs4 пытался угадать кодировку - скормить ему надо r.raw
>>> r = requests.get('https://example.com/', stream=True)
>>> data = r.raw.read()

