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 BeautifulSoup使用方法详解
- Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
- python 解析html之BeautifulSoup
- Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
- python中bs4.BeautifulSoup的基本用法
- python基于BeautifulSoup实现抓取网页指定内容的方法
- Python使用BeautifulSoup库解析HTML基本使用教程
- python爬虫之BeautifulSoup 使用select方法详解
- python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
- 从零开始学习Python与BeautifulSoup网页数据抓取
相关文章
利用Python的Twisted框架实现webshell密码扫描器的教程
这篇文章主要介绍了利用Python的Twisted框架实现webshell密码扫描器的教程,用到了Twisted框架的异步通信机制,需要的朋友可以参考下2015-04-04音频处理 windows10下python三方库librosa安装教程
这篇文章主要介绍了音频处理 windows10下python三方库librosa安装方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-06-06Python多进程multiprocessing.Pool类详解
这篇文章主要为大家详细介绍了Python多进程multiprocessing.Pool类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2018-04-04
最新评论