Хочу спарсить авито, но когда получаю html выводит какую-то бурду. Подскажите что не так. Пример полученного html:
href="https://m.avito.ru/rossiya/kvartiry">\n \n <title>\xd0\x9a\xd0\xb2\xd0\xb0\xd1\x80\xd1\x82\xd0\xb8\xd1\x80\xd1\x8b - \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb4\xd0\xb0\xd0\xb6\xd0\xb0, \xd0\xbf\xd0\xbe\xd0\xba\xd1\x83\xd0\xbf\xd0\xba\xd0\xb0 \xd0\xb8 \xd0\xb0\xd1\x80\xd0\xb5\xd0\xbd\xd0\xb4\xd0\xb0 \xd0\xb1\xd0\xb5\xd0\xb7 \xd0\xbf\xd0\xbe\xd1\x81\xd1\x80\xd0\xb5\xd0\xb4\xd0\xbd\xd0\xb8\xd0\xba\xd0\xbe\xd0\xb2 \xd0\xb2 \xd0\xa0\xd0\xbe\xd1\x81\xd1\x81\xd0\xb8\xd0\xb8 \xd0\xbd\xd0\xb0 Avito </title>\n <meta name="description" content="\xd0\x9e\xd0\xb1\xd1\x8a\xd1\x8f\xd0\xb2\xd0\xbb\xd0\xb5\xd0\xbd\xd0\xb8\xd1\x8f \xd0\xbe \xd0\xbf\xd1\x80\xd0\xbe\xd0\xb4\xd0\xb0\xd0\xb6\xd0\xb5, \xd0\xbf\xd0\xbe\xd0\xba\xd1\x83\xd0\xbf\xd0\xba\xd0\xb5 \xd0\xb8 \xd0\xb0\xd1\x80\xd0\xb5\xd0\xbd\xd0\xb4\xd0\xb5 \xd0\xba\xd0\xb2\xd0\xb0\xd1\x80\xd1\x82\xd0\xb8\xd1\x80 \xd0\xb1\xd0\xb5\xd0\xb7 \xd0\xbf\xd0\xbe\xd1\x81\xd1\x80\xd0\xb5\xd0\xb4\xd0\xbd\xd0\xb8\xd0\xba\xd0\xbe\xd0\xb2 \xd0\xb2
Вот так вывожу это добро:
def get_html(url):
response = urllib.request.urlopen(url)
print(response.read())
Как можно это исправить?
Доверьте BeautifulSoup самому парсить страницу:
from bs4 import BeautifulSoup
from urllib.request import urlopen
def get_html(url):
rs = urlopen(url)
root = BeautifulSoup(rs, 'html.parser')
print(root)
Python 3.6, работает без проблем:
import urllib
url = 'https://m.avito.ru/rossiya/kvartiry'
response = urllib.request.urlopen(url)
print(response.read().decode('utf-8'))
response.read() - возвращает нам строку bytes, соответственно декодируем её в utf-8 и всё работает
Сборка персонального компьютера от Artline: умный выбор для современных пользователей