Python urllib2 декодирует чанк кодирование - PullRequest
2 голосов
/ 28 августа 2011

У меня есть следующий код для открытия и чтения URL:

html_data = urllib2.urlopen(req).read()

, и я считаю, что это самый стандартный способ чтения данных из HTTP.Однако, когда ответ имеет chunked transfer-кодирование , ответ начинается со следующих символов:

1eb0\r\n2625\r\n
<?xml version="1.0" encoding="UTF-8"?>
...

Это происходит из-за упомянутого выше chunked кодирования, и, таким образом, мои данные XML становятся поврежденными.

Так вот, мне интересно, как я могу избавиться от всех метаданных, связанных с кусочной кодировкой?

Ответы [ 3 ]

1 голос
/ 04 сентября 2011

Я закончил с пользовательским разделением XML, как это:

    xml_start = html_data.find('<?xml')
    xml_end = html_data.rfind('</mytag>')
    if xml_start !=0:
        log_user_action(req.get_host() ,'chunked data', html_data, {})
        html_data = html_data[xml_start:]
    if xml_end != len(html_data)-len('</mytag>')-1:
        html_data = html_data[:xml_end+1]

Не могу найти простое решение.

0 голосов
/ 20 сентября 2012

1eb0 \ r \ n2625 \ r \ n - позиции начала / остановки сегмента (в шестнадцатеричном формате) в повторно собранной полезной нагрузке

0 голосов
/ 28 августа 2011

Вы можете удалить все раньше? Xml

html_data = html_data[html_data.find('<?xml'):]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...