我有以下代码来打开和阅读网址:
html_data = urllib2.urlopen(req).read()
我相信这是从HTTP读取数据的最标准方法。 但是,当响应为chunked tranfer-encoding时,响应将以以下字符开头:
1eb0\r\n2625\r\n
<?xml version="1.0" encoding="UTF-8"?>
...
这是由于上面提到的分块编码而导致我的XML数据损坏。
所以我想知道如何摆脱与分块编码相关的所有元数据?
答案 0 :(得分:1)
我最终使用自定义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]
找不到任何简单的解决方案。
答案 1 :(得分:0)
1eb0 \ r \ n \ n2625 \ r \ n是重新组装的有效负载中的段开始/停止位置(十六进制)
答案 2 :(得分:-1)
您可以删除之前的所有内容吗?xml
html_data = html_data[html_data.find('<?xml'):]