Что происходит, так это то, что на сайте используется «endash», который немного длиннее (и тот, который вы должны использовать в диапазонах, например, 40-56). Да, тире - это целая наука сама по себе).
В Unicode у endash есть кодовая точка U + 2013.Полученные числа, \ 342 \ 200 \ 223, являются восьмеричным представлением кодировки UTF-8 этой кодовой точки.Почему вы получаете восьмеричное, я не знаю, я получаю hex, поэтому на моем компьютере это выглядит как '\ xe2 \ x80 \ x93'.Но это не имеет значения, это просто представление.Числа одинаковы.
Что вам, вероятно, следует сделать, это как можно раньше декодировать строку HTML, которую вы получите, в Unicode.Заголовки, которые вы получаете, когда получаете страницу, должны указывать, какую кодировку она использует (хотя здесь, по-видимому, UTF8), извлечь эти данные из заголовков довольно просто, вы увидите это, когда распечатаете заголовки.
Затем вы декодируете HTML-данные:
htmldata = htmldata.decode(<the encoding you found in the headers>)