urllib read()更改属性

时间:2016-09-17 18:32:46

标签: python python-3.x urllib

我有一个基本脚本,它要求网站获取html源代码。 在抓取几个网站时,我发现源代码中的不同属性被表示错误。

示例:

from urllib import request

opener = request.build_opener()
with opener.open("https://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.2") as response:
    html = response.read()
print(html)

我将结果(html var)与Chrome和Firefox代表的源代码进行了比较。

我看到了这些差异:

Browser                        Urllib

href='rfc2616.html'            href=\'rfc2616.html\'
rev='Section'                  rev=\'Section\'
rel='xref'                     rel=\'xref\'
id='sec4.5'                    id=\'sec4.4\'

看起来urllib在这里添加反斜杠以转义代码。

这是urllib内部的错误,还是有办法解决这个问题?

提前致谢。

1 个答案:

答案 0 :(得分:1)

responce.read()将返回bytes个对象,打印时其转义序列无法解释,请参阅:

print(b'hello\nworld') # prints b'hello\nworld'

您需要decodestr,在打印时,会正确评估转义:

print(html.decode())