Парсер выдает иероглифы
Вообще мне нужно парсить буквально одну строку на одной конкретной странице сайта https://steamdb.info Но html.text выдает просто иероглифы, хотя статус html = 200 (����7�����, такого формата), причем другие сайты выдают нормальный html код
Заметил что такая же шляпа не только со steamdb, а еще с Ютубом и сайтом Lenta.ru
Куда копать :с
Спасибо
import requests
from bs4 import BeautifulSoup
URL = 'https://steamdb.info'
HEADERS = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36 OPR/86.0.4363.70',
'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'accept-encoding': 'gzip, deflate, br',
'accept-language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7',
'cache-control': 'max-age=0',
'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="100", "Opera GX";v="86"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'cookie': '',
'upgrade-insecure-requests': '1'
}
def get_html(url, params=''):
r = requests.get(url, headers=HEADERS, params=params)
r.encoding = 'UTF8'
return r
def get_content(html):
soup = BeautifulSoup(html, 'html.parser')
items = soup.find_all('div', class_='table-responsive')
cards = []
html = get_html(URL)
print (html)
print (html.text)
Ответы (2 шт):
Чистый requests автоматически распаковывают только ответы сжатые с помощью gzip. Так как у вас ответ приходит в кодировке с использованием сжатия Brotli,
'accept-encoding': 'gzip, deflate, br',
то для декодирования нужны сторонние библиотеки brotli или brotlicffi. Смотри в документации requests часто задаваемые вопросы Закодированные данные?