当前位置:  编程技术>python

python抓取网页时字符集转换问题处理方案分享

    来源: 互联网  发布时间:2014-10-08

    本文导语:  问题提出:     有时候我们采集网页,处理完毕后将字符串保存到文件或者写入数据库,这时候需要制定字符串的编码,如果采集网页的编码是gb2312,而我们的数据库是utf-8的,这样不做任何处理直接插入数据库可能会乱码(...

问题提出:

    有时候我们采集网页,处理完毕后将字符串保存到文件或者写入数据库,这时候需要制定字符串的编码,如果采集网页的编码是gb2312,而我们的数据库是utf-8的,这样不做任何处理直接插入数据库可能会乱码(没测试过,不知道数据库会不会自动转码),我们需要手动将gb2312转换成utf-8。

首先我们知道,python里的字符默认是ascii码,英文当然没问题啦,碰到中文的时候立马给跪。

不知道你还记不记得,python里打印中文汉字的时候需要在字符串前面加 u:

print u"来搞基吗?"

这样子中文才能显示,这里面的u的作用就是将后面的字符串转换为unicode码,这样中文才能得到正确的显示。
这里与之相关的有一个unicode()函数,用法如下

str="来搞基"
str=unicode(str,"utf-8")
print str

与u的区别是,这里用unicode将str转换为unicode编码,需要正确指定第二个参数,这里的utf-8是我test.py脚本自身的文件字符集,默认的可能是ansi。
unicode这是一个关键,下面继续

我们开始抓取百度首页,注意,游客访问百度首页,查看网页源代码,它的charset=gb2312。

import urllib2
def main():
  f=urllib2.urlopen("http://www.baidu.com")
  str=f.read()
  str=unicode(str,"gb2312")
  fp=open("baidu.html","w")
  fp.write(str.encode("utf-8"))
  fp.close()

if __name__ == '__main__' :
  main()

解释:
我们首先用urllib2.urlopen()方法将百度首页抓取到,f是句柄 ,用str=f.read()将所有源代码读入str中

搞清楚,str里面就是我们抓取的html源代码,由于网页默认的字符集是gb2312,所以如果我们直接保存到文件中,文件编码将是ansi。

对于大部分人来说,其实这就足够了,但是有时候我就想把gb2312转换成utf-8的该怎么办呢?

首先:
    str=unicode(str,"gb2312") #这里的gb2312就是str的实际字符集,我们现在将其转换成unicode

然后:
    str=str.encode("utf-8") #将unicode的字符串重新编码成utf-8

最后:

    将str写入到文件中,打开文件看一下编码属性,发现是utf-8的了,把


    
 
 

您可能感兴趣的文章:

  • 基于python实现的网络爬虫功能:自动抓取网页介绍
  • python采用requests库模拟登录和抓取数据的简单示例
  • python抓取网页内容示例分享
  • python抓取网页中的图片示例
  • Python抓取Discuz!用户名脚本代码
  • python抓取豆瓣图片并自动保存示例学习
  • python 自动提交和抓取网页
  • python抓取京东价格分析京东商品价格走势
  • 使用python BeautifulSoup库抓取58手机维修信息
  • python小技巧之批量抓取美女图片
  • python使用beautifulsoup从爱奇艺网抓取视频播放
  • python抓取京东商城手机列表url实例代码
  • python抓取网页图片示例(python爬虫)
  • python抓取网页图片并放到指定文件夹
  • python正则匹配抓取豆瓣电影链接和评论代码分享
  • python正则表达式抓取成语网站
  • python抓取某汽车网数据解析html存入excel示例
  • 深度剖析使用python抓取网页正文的源码
  • python多线程抓取天涯帖子内容示例
  • Python使用代理抓取网站图片(多线程)
  • Python代理抓取并验证使用多线程实现
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Python不使用print而直接输出二进制字符串
  • Python 字符串中的字符倒转
  • Python中实现json字符串和dict类型的互转
  • python去掉字符串中重复字符的方法
  • Python将日期时间按照格式转换成字符串
  • C++中的Python字符串处理 pyString
  • python字符串格式化输出及相关操作代码举例
  • python 字符串split的用法分享
  • Python中类似printf的字符串格式化详解
  • Python字符遍历的艺术
  • Python 连接字符串(join %)
  • python字符串排序方法
  • python实现从字符串中找出字符1的位置以及个数的方法
  • python list 合并连接字符串的方法
  • Python 字符串定义
  • Python 匹配任意字符(包括换行符)的正则表达式写法
  • python 输出一个两行字符的变量
  • python 将字符串转换成字典dict
  • Python字符转换
  • Python去掉字符串中空格的方法
  • python字符串连接方式汇总
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 让python同时兼容python2和python3的8个技巧分享
  • python异常信息堆栈输出到日志文件
  • 使用setup.py安装python包和卸载python包的方法
  • python下用os.execl执行centos下的系统时间同步命令ntpdate
  • 不小心把linux自带的python卸载了,导致安装一个依赖原python的软件不能安装,请问该怎么办?
  • Python namedtuple对象json序列化/反序列化及对象恢复
  • Python开发者社区整站源码 Pythoner
  • Python获取网页编码的方法及示例代码
  • python读取csv文件示例(python操作csv)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3