python3中urllib.request.urlopen.read读取的网页格式问题

#!/usr/bin/env python3
#-*- coding: utf-8 -*-
#<a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102eo83.html">《论电影的七个元素》——关于我对电…</a>

import urllib.request
str0 =r' <a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102eo83.html">《论电影的七个元素》——关于我对电…</a>'
title0=str0.find(r'<a title')
print(title0)
href0=str0.find(r'href')
print(href0)
html0=str0.find(r'html')
print(html0)
url=str0[href0+6:html0+4]
print(url)
content = urllib.request.urlopen(url).read()#当该语句读取的返回值是bytes类型时,要将其转换成utf-8才能正常显示在python程序中

print(type(content))#此时为bytes类型
print(content.decode('utf-8'))#需要进行类型转换才能正常显示在python中
print(type(content.decode('utf-8')))#返回解码后的类型,此时为str类型
filename= url[-20:]
open(filename,'wb').write(content)#在写文件时,要写成bytes类型的文件‘wb’

初学python,所用python3.5,根据教程写代码,所抓取的网页为新浪博客中的一篇文章,在使用urllib.request.urlopen(url).read()的返回值时,发现content的类型为bytes,如果不进行类型转换的话,在python打印时是乱码。

解决方案是将content解码成utf-8类型再打印,输出成文件时要以‘wb’写成字节文件。

其中在谷歌浏览器中审查元素页面打开时,head位置显示的类型是utf-8,但是实际python程序读取的格式却为bytes类型,此处不解。

转载于:https://www.cnblogs.com/StocksZ/p/5459971.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值