【发布时间】:2016-09-26 02:43:23
【问题描述】:
我正在尝试编写一个 Python 脚本,其作用类似于 Chrome 网络浏览器上的 Ctrl + S,它保存 HTML 页面,下载网页上的任何链接,最后,用本地路径替换链接的 URI磁盘。
下面发布的代码尝试将 CSS 文件中的 URI 替换为我计算机上的本地路径。
我在尝试解析不同的网站时遇到了一个问题,这让我有点头疼。
我原来的错误码是UnicodeDecodeError: 'ascii' codec can't decode byte 0xa3 in position 13801: ordinal not in range(128)
url = 'http://www.s1jobs.com/job/it-telecommunications/support/edinburgh/620050561.html'
response = urllib2.urlopen(url)
webContent = response.read()
dest_dir = 'C:/Users/Stuart/Desktop/' + title
for f in glob.glob(r'./*.css'):
newContent = webContent.replace(cssUri, "./" + title + '/' + cssFilename)
shutil.move(f, dest_dir)
当我尝试打印 newContent 或将其写入文件时,此问题仍然存在。我试图按照这个堆栈问题UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 13: ordinal not in range(128) 中的最佳答案并修改了我的行
newContent = webContent.decode('utf-8').replace(cssUri, "./" + title + '/' + cssFilename)
到newContent = webContent.decode(utf-8).replace(cssUri, "./" + title + '/' + cssFilename)。我还尝试了.decode(utf-16) 和 32,我分别得到了这些错误代码:13801: invalid start byte、byte 0x0a in position 44442: truncated data,最后是can't decode bytes in position 0-3: code point not in range(0x110000)
有人知道我应该如何解决这个问题吗?我必须补充一点,当我打印变量 webContent 时,会有输出(我注意到底部有中文)。
【问题讨论】:
-
我建议您观看和阅读nedbatchelder.com/text/unipain.html,特别注意“Unicode 三明治”。
-
你是python2还是3?
-
@ThomasTu Python 2.7,我也会看看那个 Unicode 三明治文章
标签: python html unicode encoding utf-8