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

python抓取并保存html页面时乱码问题的解决方法

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

通过本文主要向大家介绍了python 中文乱码,python 乱码,python输出中文乱码,python2.7中文乱码,python 汉字乱码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了python抓取并保存html页面时乱码问题的解决方法。分享给大家供大家参考,具体如下:

在用Python抓取html页面并保存的时候,经常出现抓取下来的网页内容是乱码的问题。出现该问题的原因一方面是自己的代码中编码设置有问题,另一方面是在编码设置正确的情况下,网页的实际编码和标示的编码不符合造成的。html页面标示的编码在这里:

这里提供一种简单的办法解决:使用chardet判断网页的真实编码,同时从url请求返回的info判断标示编码。如果两种编码不同,则使用bs模块扩展为GB18030编码;如果相同则直接写入文件(这里设置系统默认编码为utf-8)。

import urllib2
import sys
import bs4
import chardet
reload(sys)
sys.setdefaultencoding('utf-8')
def download(url):
  htmlfile = open('test.html','w')
  try:
    result = urllib2.urlopen(url)
    content = result.read()
    info = result.info()
    result.close()
  except Exception,e:
    print 'download error!!!'
    print e
  else:
    if content != None:
      charset1 = (chardet.detect(content))['encoding'] #real encoding type
      charset2 = info.getparam('charset') #declared encoding type
      print charset1,' ', charset2
      # case1: charset is not None.
      if charset1 != None and charset2 != None and charset1.lower() != charset2.lower():
        newcont = bs4.BeautifulSoup(content, from_encoding='GB18030')  #coding: GB18030
        for cont in newcont:
          htmlfile.write('%s\n'%cont)
      # case2: either charset is None, or charset is the same.
      else:
        #print sys.getdefaultencoding()
        htmlfile.write(content) #default coding: utf-8
  htmlfile.close()
if __name__ == "__main__":
  url = 'http://www.jb51.net'
  download(url)

</div>

得到的test.html文件打开如下,可以看到使用的是UTF-8无BOM编码格式存储的,也就是我们设置的默认编码:

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python编码操作技巧总结》、《Python图片操作技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

</div>

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

  • python抓取并保存html页面时乱码问题的解决方法
  • python中文乱码的解决方法
  • python中将阿拉伯数字转换成中文的实现代码
  • python 中文乱码问题深入分析
  • python中将阿拉伯数字转换成中文的实现代码
  • python 中文乱码问题深入分析

相关文章

  • 深入讨论Python函数的参数的默认值所引发的问题的原因
  • python通过scapy获取局域网所有主机mac地址示例
  • Python XML RPC服务器端和客户端实例
  • 跟老齐学Python之关于循环的小伎俩
  • Python __getattr__与__setattr__使用方法
  • 使用Python的PIL模块来进行图片对比
  • Python生成随机验证码的两种方法
  • 浅谈python 四种数值类型(int,long,float,complex)
  • python实现井字棋游戏
  • 跟老齐学Python之总结参数的传递

文章分类

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

最近更新的内容

    • python读取csv文件示例(python操作csv)
    • 安装Python的web.py框架并从hello world开始编程
    • Python中使用PyQt把网页转换成PDF操作代码实例
    • python实现根据主机名字获得所有ip地址的方法
    • Python 探针的实现原理
    • 深入讨论Python函数的参数的默认值所引发的问题的原因
    • win与linux系统中python requests 安装
    • Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
    • 深入解析Python中的上下文管理器
    • Python基本语法经典教程

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

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