Python 是否可以在urllib2响应中查看数据?

Python 是否可以在urllib2响应中查看数据?,python,html,http,encoding,urllib2,Python,Html,Http,Encoding,Urllib2,我需要在HTTP响应中检测字符编码。为此,我查看了标题,如果没有在内容类型标题中设置,我必须查看响应并查找“”标题。我希望能够编写一个函数,其外观和工作方式如下: response = urllib2.urlopen("http://www.example.com/") encoding = detect_html_encoding(response) ... page_text = response.read() 但是,如果在“detect\u html\u encoding”方法中执行re

我需要在HTTP响应中检测字符编码。为此,我查看了标题,如果没有在内容类型标题中设置,我必须查看响应并查找“
”标题。我希望能够编写一个函数,其外观和工作方式如下:

response = urllib2.urlopen("http://www.example.com/")
encoding = detect_html_encoding(response)
...
page_text = response.read()
但是,如果在“detect\u html\u encoding”方法中执行response.read(),则调用函数后的subsuqent response.read()将失败

有没有一种简单的方法可以查看响应和/或在阅读后回放

  • 如果它位于HTTP头中(而不是文档本身),则可以使用
    response.info()
    来检测编码
  • 如果要解析HTML,请保存响应数据:

    page_text = response.read()
    encoding = detect_html_encoding(response, page_text)
    
  • 如果它位于HTTP头中(而不是文档本身),则可以使用
    response.info()
    来检测编码
  • 如果要解析HTML,请保存响应数据:

    page_text = response.read()
    encoding = detect_html_encoding(response, page_text)
    
  • 当然,诀窍是确保
    response.read()
    在需要时再次返回相同的内容。。。这就是为什么我们在必要时将
    lambda
    分配给它,也就是说,如果我们已经需要提取内容——这确保了可以再次提取相同的内容(一次又一次,…;-)

    当然,诀窍是确保
    response.read()
    在需要时再次返回相同的内容。。。这就是为什么我们在必要时将
    lambda
    分配给它,也就是说,如果我们已经需要提取内容——这确保了可以再次提取相同的内容(一次又一次,…;-)。

    它可以(1)在标题中,(2)在文档中或(3)不存在(在这种情况下,我必须使用chardet根据文档中的字符进行检测)。我显然可以提前提取文本,但我想做的具体事情是基本上允许我避免这种方法。它可以(1)在标题中,(2)在文档中或(3)不存在(在这种情况下,我必须使用chardet根据文档中的字符进行检测)。我显然可以提前提取文本,但我想做的具体事情是基本上允许我避免这种方法。