python3中文字符编码问题

最近在进行网络爬虫时,被中文的编码问题搞得很头疼,特别是在windows环境下。

1.爬取到的中文网页内容,在解析时出现解析错误

一般情况下,我们都是用urllib中的相关函数,进行web页面的爬取,然后进行相关处理。

但是经常在处理中文web时,对文本内容的处理,经常出现一些编码错误。

为了彻底解决这个问题,一般是先编码再解码,但是还是会儿出现一些问题……

后来,我的解决办法:

使用requests库,很好地支持非英文字符。

import requests

response = requests.get(url)

response.encoding = ‘utf-8‘      #显示地制定网页编码,一般情况下可以不用

html = response.text  #html的内容都是用utf-8的编码规则编码的

bsobj = BeautifulSoup(html, ‘html.parser‘)

2.中文编码输出到文件中

只需在打开文件时,传入相应的关键字参数即可

fileobj = open(file,‘w‘,encoding=‘utf-8‘)

其它流程不变

时间: 2024-08-06 16:06:07

python3中文字符编码问题的相关文章

JAVA中文字符编码问题

JAVA的中文字符乱码问题一直很让人头疼.特别是在WEB应用中.网上的分析文章和解决方案都很多,但总是针对某些特定情况的.很多次遇到乱码问 题后, 经过极为辛苦的调试和搜索资料后终于解决,满以为自己已经掌握了对付这些字符乱码怪兽的诀窍.可当过段时间,换了个应用或换了个环境,又会碰到那讨厌的火 星文,并再次无所适从.于是下决心好好整理一下中文字符编码问题,以方便自己记忆,也为其他程序员兄弟们提供一份参考. 首先要了解JAVA处理字符的原理.JAVA使用UNICODE来存储字符数据,处理字符时通常有

OC下Base64编码的中文字符编码问题

Base64是常用的编码规范之一,如网络传输中应用广泛,之前列举过base64编码的原理:<base64举例> 以及java实现的base64编码工具类. 这里,贴出OC下的base64代码,在平台之间通信过程中保证编码能通用——中间出现一个编码问题,google官方提供的base64Util包默认用的Utf-8编码,而中文之前统一用的gbk编码,以下代码修正了这个问题: 关键点:将CommonFunc的 base64StringFromText 和  textFromBase64String

【Python3之字符编码】

一.字符集和字符编码 1.定义 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的英文.汉字等字符是二进制数转换之后的结果.通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码":反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密.在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码. 字符(Character):是一个信息单位,在计算机里面,一个中文汉字是一个字符,一个英文字母是

mysql 处理中文字符编码乱码

SELECT * FROM demo03; #设置表默认字符编码ALTER TABLE demo03 DEFAULT CHARACTER SET utf8;   INSERT INTO demo03(`id`,`username`)VALUES (6,'李四') #设置字段默认字符编码,保存中文ALTER TABLE `demo03` CHANGE  `name` `username`   VARCHAR(50) CHARACTER SET  utf8; #显示创建表的结构SHOW CREATE

中文字符编码

UTF-8和GBK等中文字符编码格式介绍及相互转换 UTF-8 GBK UTF8 GB2312 之间的区别和关系 字符编码详解

python读取中文字符编码问题

preface:许久没遇到过编码问题,一没注意就被绊倒脚了.. 一.编辑器是以ASICC编码格式的,若想在程序中有中文,需要改为utf-8格式,加入如下代码可破: <span style="font-size:18px;">import sys reload(sys) sys.setdefaultencoding('utf8') </span> 或者参考卤主转载的这篇http://blog.csdn.net/u010454729/article/details/

golang中文字符编码转换

golang 有很多需要将中文转成utf8的 网上搜到一个直接转的,记录下,备用 package main import "golang.org/x/text/encoding/simplifiedchinese" type Charset string const ( UTF8 = Charset("UTF-8") GB18030 = Charset("GB18030") ) func ConvertByte2String(byte []byt

Filterpost请求中文字符编码的过滤器 --学习笔记

java代码: import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class Lo

直接给URL整体中文字符编码

public static String encode(String url, String encode) throws UnsupportedEncodingException { StringBuilder sb = new StringBuilder(); StringBuilder noAsciiPart = new StringBuilder(); for (int i = 0; i < url.length(); i++) { char c = url.charAt(i); if