我有一个基本脚本,它要求网站获取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
内部的错误,还是有办法解决这个问题?
提前致谢。
答案 0 :(得分:1)
responce.read()
将返回bytes
个对象,打印时其转义序列无法解释,请参阅:
print(b'hello\nworld') # prints b'hello\nworld'
您需要decode
到str
,在打印时,会正确评估转义:
print(html.decode())