Python BeautifulSoup中文乱码问题的2种解决方法

 更新时间:2014年04月22日 10:16:48   作者:  
这篇文章主要介绍了Python BeautifulSoup中文乱码问题的2种解决方法,需要的朋友可以参考下

解决方法一:

使用python的BeautifulSoup来抓取网页然后输出网页标题,但是输出的总是乱码,找了好久找到解决办法,下面分享给大家
首先是代码

复制代码 代码如下:

from bs4 import BeautifulSoup
import urllib2

url = 'https://www.jb51.net/'
page = urllib2.urlopen(url)

soup = BeautifulSoup(page,from_encoding="utf8")
print soup.original_encoding
print (soup.title).encode('gb18030')

file = open("title.txt","w")
file.write(str(soup.title))
file.close()

 

for link in soup.find_all('a'):
    print link['href']

在刚开始测试的时候发现,虽然输出是乱码的,但是写在文件里面却是正常的.然后在网上找了找解决办法才发现
print一个对象的逻辑:内部是调用对象的__str__得到对应的字符串的,此处对应的是soup的__str__ 而针对于soup本身,其实已经是Unicode编码,所以可以通过指定__str__输出时的编码为GBK,以使得此处正确显示非乱码的中文
而对于cmd:(中文的系统中)编码为GBK,所以只要重新编码为gb18030就可以正常输出了
就是下面这行代码
复制代码 代码如下:

print (soup.title).encode('gb18030')

解决方法二:

BeautifulSoup在解析utf-8编码的网页时,如果不指定fromEncoding或者将fromEncoding指定为utf-8会出现中文乱码的现象。

解决此问题的方法是将Beautifulsoup构造函数中的fromEncoding参数的值指定为:gb18030

复制代码 代码如下:

import urllib2
from BeautifulSoup import BeautifulSoup

page = urllib2.urlopen('https://www.jb51.net/');
soup = BeautifulSoup(page,fromEncoding="gb18030")
print soup.originalEncoding
print soup.prettify()

相关文章

  • Python Pandas学习之基本数据操作详解

    Python Pandas学习之基本数据操作详解

    本文将通过读取一个股票数据,来进行Pandas的一些基本数据操作的语法介绍。文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2022-02-02
  • python实现猜数字游戏

    python实现猜数字游戏

    这篇文章主要为大家详细介绍了python实现猜数字游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • Python实现Web指纹识别实例

    Python实现Web指纹识别实例

    这篇文章主要来带大家探索Web指纹识别:了解主流识别方式,从标题到指纹读取网站信息的简单方法,揭秘Web指纹识别 关键字、哈希和URL的魔力
    2023-10-10
  • python中使用paramiko模块并实现远程连接服务器执行上传下载功能

    python中使用paramiko模块并实现远程连接服务器执行上传下载功能

    paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。这篇文章主要介绍了python中使用paramiko模块并实现远程连接服务器执行上传下载功能,需要的朋友可以参考下
    2020-02-02
  • Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】

    Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】

    这篇文章主要介绍了Python 装饰器@,对函数进行功能扩展操作,结合实例形式分析了装饰器的相关使用技巧,以及开闭原则下的函数功能扩展,需要的朋友可以参考下
    2019-10-10
  • python使用docx模块读写docx文件的方法与docx模块常用方法详解

    python使用docx模块读写docx文件的方法与docx模块常用方法详解

    这篇文章主要介绍了python使用docx模块读写docx文件的方法与docx模块常用方法详解,需要的朋友可以参考下
    2020-02-02
  • OpenCV实现直线检测

    OpenCV实现直线检测

    这篇文章主要为大家详细介绍了OpenCV实现直线检测,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • GoReplay中间件python版本使用教程

    GoReplay中间件python版本使用教程

    GoReplay 是一个用于网络流量录制和回放的工具,它可以用于测试和优化分布式系统,这篇文章主要介绍了GoReplay中间件python版本使用教程,需要的朋友可以参考下
    2024-02-02
  • 浅谈python中的错误与异常

    浅谈python中的错误与异常

    写Python代码的小伙伴不可避免地会遇到代码执行错误和异常,这次就来详细的总结一下python中的错误和异常
    2021-06-06
  • Django-celery-beat动态添加周期性任务实现过程解析

    Django-celery-beat动态添加周期性任务实现过程解析

    这篇文章主要介绍了Django-celery-beat动态添加周期性任务实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11

最新评论