• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > python抓取网页时字符集转换问题处理方案分享

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

作者:hebedich 字体:[增加 减小] 来源:互联网

hebedich 通过本文主要向大家介绍了python 格式化字符,python中转义字符,python转义字符,python 字符转数字,python 字符等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

问题提出:

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

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

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

print u"来搞基吗?"
</div>

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

str="来搞基"
str=unicode(str,"utf-8")
print str
</div>

与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()
</div>

解释:
我们首先用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的了,把<meta charset="gb2312"改成<meta charset="utf-8" ,就是一个utf-8的网页了。做了这么多其实就完成了一个gb2312->utf-8的转码。


总结:

    我们回顾一下,如果需要将字符串按照指定的字符集保存,有以下几个步骤:

    1:用unicode(str,"原来的编码")将str解码成unicode字符串

    2:将unicode字符串str 使用 str.encode("指定的字符集") 转换成你指定的字符集

    3:将str保存文件,或者写入数据库等操作,当然,编码你已经指定了,不是吗?

</div>

您可能想查找下面的文章:

  • Python做简单的字符串匹配详解
  • Python 基础知识之字符串处理
  • Python 基础知识之字符串处理
  • 简单谈谈Python中的反转字符串问题
  • Python随机生成带特殊字符的密码
  • 深入讲解Python编程中的字符串
  • 深入讲解Python编程中的字符串
  • Python实现查找系统盘中需要找的字符
  • python实现查找两个字符串中相同字符并输出的方法
  • Python实现查找系统盘中需要找的字符

相关文章

  • Python计算已经过去多少个周末的方法
  • Python中的迭代器与生成器高级用法解析
  • python实现同时给多个变量赋值的方法
  • 使用Python脚本将绝对url替换为相对url的教程
  • Python采集腾讯新闻实例
  • 详解python进行mp3格式判断
  • python常规方法实现数组的全排列
  • 总结网络IO模型与select模型的Python实例讲解
  • python在控制台输出进度条的方法
  • 学习python处理python编码问题

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python linecache.getline()读取文件中特定一行的脚本
    • python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
    • Python3中的真除和Floor除法用法分析
    • Python中用sleep()方法操作时间的教程
    • python实现字符串和日期相互转换的方法
    • Python脚本实时处理log文件的方法
    • Python实现去除代码前行号的方法
    • Python实现队列的方法
    • Python常用算法学习基础教程
    • 介绍Python中几个常用的类方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有