Python BeautifulSoup中文乱码问题的2种解决方法
时间:2023-05-09 13:42:17
解决方法一:
使用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,乱码


猜你喜欢
巧用XSL和ASP在线编辑XML文档
2008-10-25 14:54:00
用好Frontpage中的各种回车
2008-02-21 14:33:00
记Qzone项目组视觉设计标注的前前后后
2010-03-24 18:03:00

python操作xlsx格式文件并读取
2021-07-01 20:03:26

Python for Informatics 第11章 正则表达式(一)
2021-01-27 06:43:43
Python实现新版正方系统滑动验证码识别
2022-11-08 09:14:32

Python3读写ini配置文件的示例
2023-05-29 22:59:21
Python判断字符串是否为合法标示符操作
2023-09-28 18:49:01
oracle中的视图详解
2009-12-22 11:48:00
python数据结构之图的实现方法
2022-12-29 04:59:38
基于PHP+Ajax实现表单验证的详解
2023-11-14 12:52:43
Python中Turtle库改变画笔(海龟)方向的两种方法总结
2022-04-21 11:09:52

Go数组与切片轻松掌握
2024-02-12 19:55:36

Python语言的12个基础知识点小结
2023-08-23 10:12:07
ASP利用TCPIP.DNS组件获得域名对应的IP
2009-11-07 19:21:00
Google谷歌农历鼠年春节的变化
2008-02-11 17:07:00

mysql登录遇到ERROR 1045问题解决方法
2024-01-22 15:09:57
list视图方式设计浅析
2008-12-21 16:04:00

Pytorch 图像变换函数集合小结
2022-06-14 08:52:09

详解Mysql基础语法的使用
2024-01-28 07:50:05