代码之家  ›  专栏  ›  技术社区  ›  Kiran Kuppa

在Python 3.1中使用带有HTTPResponse的HTML解析器

  •  0
  • Kiran Kuppa  · 技术社区  · 17 年前

    HTTPResponse对象的响应数据类型为字节。

    conn = http.client.HTTPConnection(www.yahoo.com)
    conn.request("GET","/")
    response = conn.getresponse();
    data = response.read()
    type(data)
    

    数据的类型为bytes。

    我想将响应与Python 3.1的内置HTML解析器一起使用。但是我发现HTMLParser.feed()需要一个字符串(str类型)。此方法不接受数据作为参数。为了避免这个问题,我使用data.decode()继续解析。

    问题:

    1. HTTP有原因吗

    我想原因是:服务器的响应可以是任何字符集。因此,库不能假设它是ASCII码。但是,python中的字符串是Unicode。HTTP库也可以返回一个字符串。HTML标签肯定是ASCII格式的。

    1 回复  |  直到 17 年前
        1
  •  2
  •   Rushyo    17 年前

    不返回字符串?

    此外,HTTP!=HTML。

    推荐文章