Данные ответа от объекта HTTPResponse имеют тип байтов.
conn = http.client.HTTPConnection(www.yahoo.com)
conn.request("GET","/")
response = conn.getresponse();
data = response.read()
type(data)
Данные имеют тип байтов.
Я хотел бы использовать ответ вместе со встроенным HTML-парсером Python 3.1. Однако я считаю, что HTMLParser.feed () требует строку (типа str). И этот метод не принимает данные в качестве аргумента. Чтобы обойти эту проблему, я использовал data.decode () для продолжения анализа.
Вопрос:
- Есть ли лучший способ достичь
это?
- Есть ли причина, по которой HTTP
ответ не возвращает строку?
Полагаю, причина в следующем: ответ сервера может быть в любом наборе символов. Таким образом, библиотека не может предположить, что это будет ASCII. Но тогда строка в Python - это Unicode. Библиотека HTTP также может возвращать строку. HTML-теги определенно в ASCII.