python爬取小说出现乱码_详解Python解决抓取内容乱码问题(decode和encode解码)

一、乱码问题描述

经常在爬虫或者一些操作的时候,经常会出现中文乱码等问题,如下

2019329170302093.png?201922917322

原因是源网页编码和爬取下来后的编码格式不一致

二、利用encode与decode解决乱码问题

字符串在Python内部的表示是unicode编码,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。

encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode(‘utf-8'),表示将unicode编码的字符串str2转换成utf-8编码。

decode中写的就是想抓取的网页的编码,encode即自己想设置的编码

代码如下

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: xulinjie time:2017/10/22

import urllib2

request=urllib2.Request(r'http://nhxy.zjxu.edu.cn/')

RES=urllib2.urlopen(request).read()

RES = RES.decode('gb2312').encode('utf-8')//解决乱码

wfile=open(r'./1.html',r'wb')

wfile.write(RES)

wfile.close()

print RES

或者

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: xulinjie time:2017/10/22

import urllib2

request=urllib2.Request(r'http://nhxy.zjxu.edu.cn/')

RES=urllib2.urlopen(request).read()

RES=RES.decode('gb2312')

RES=RES.encode('utf-8')

wfile=open(r'./1.html',r'wb')

wfile.write(RES)

wfile.close()

print RES

但是还要注意:

如果一个字符串已经是unicode了,再进行解码则将出错,因此通常要对其编码方式是否为unicode进行判断

isinstance(s, unicode)#用来判断是否为unicode

用非unicode编码形式的str来encode会报错

所以最终可靠代码:

#!/usr/bin/env python

# -*- coding:utf-8 -*-

# author: xulinjie time:2017/10/22

import urllib2

request=urllib2.Request(r'http://nhxy.zjxu.edu.cn/')

RES=urllib2.urlopen(request).read()

if isinstance(RES, unicode):

RES=RES.encode('utf-8')

else:

RES=RES.decode('gb2312').encode('utf-8')

wfile=open(r'./1.html',r'wb')

wfile.write(RES)

wfile.close()

print RES

2019329170549066.png?201922917610

三、如何找到需要抓取的目标网页的编码格式

1、查看网页源代码

2019329170658871.png?201922917720

如果源代码中没有charset编码格式显示可以用下面的方法

2、检查元素,查看Response Headers

2019329170759175.png?201922917818

以上所述是小编给大家介绍的Python解决抓取内容乱码问题(decode和encode解码)详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/431643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

daatable动态创建

方法一: DataTable tblDatas new DataTable("Datas");DataColumn dc null;dc tblDatas.Columns.Add("ID", Type.GetType("System.Int32"));dc.AutoIncrement true;//自动增加dc.AutoIncrementSeed 1;//起始为1dc.AutoIncrementStep 1;//步…

北方股份无人驾驶矿卡_踏歌智行完成B轮2亿元融资,无人驾驶矿山赛道爆发在即...

作者 / 李笠10 月 30 日,矿山无人驾驶运输的领军企业踏歌智行完成了 2 亿元 B 轮融资。这是无人驾驶矿山赛道迄今为止最大的一笔融资。据悉,本轮融资由前海母基金和宝通投资共同领投,清研资本、蓝焱资本等跟投。这也是踏歌智行继 2019 年连续…

计算机视觉子方向,计算机视觉方向简介 | 人脸识别中的活体检测算法综述

原标题:计算机视觉方向简介 | 人脸识别中的活体检测算法综述本文转载自“SIGAI人工智能学习与实践平台”(ID:SIGAICN)导言1. 什么是活体检测?判断捕捉到的人脸是真实人脸,还是伪造的人脸攻击(如:彩色纸张打印人脸图&am…

黑客们的故事(连载三) 因为好奇

上期说到的肯和丹尼斯在黑客文化中的高知名度,不仅是因为他们开发出的操作系统和编程语言,更在于他们行为所体现出的价值观:求知、探索,以及追求极致。这些是黑客精神的精髓——虽然黑客们贯彻这些精神时的方式并不总是合理合法的…

css3禅密花园叫什么名字_新生儿起名:2021元旦出生男孩叫什么名字

2021年元旦节又是新的一年开始,在这辞旧迎新的日子里出生的男孩,都带有极好的寓意兆头,父母们如果能顺借此时机,取一个具有出生纪念意义的名字,那必然能让男孩的成长有着不同与众的历程。2021元旦出生男孩叫什么名字比…

量产之后计算机读不出u盘,求大神、我量产没成功然后U盘就电脑上就不显示了...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼Faq faq faq faq faq faq faq faq faq faq Faq faq faq faq faq faq faq faq faq faq Faq faq faq faq faq faq faq faq faq faq Faq faq faq faq faq faq faq faq faq faq Faq faq faq faq faq faq faq faq faq faq Faq faq faq f…

10个让人很舒服的沟通技巧

转载于:https://www.cnblogs.com/yymn/p/4605237.html

idea将远程代码更新合并到本地_idea 本地调试远程服务器代码

基本原理本机和远程主机的两个 VM 之间使用 Debug 协议通过 Socket 通信,传递调试指令和调试信息。 被调试程序的远程虚拟机:作为 Debug 服务端,监听 Debug 调试指令。jdwp是Java Debug Wire Protocol的缩写。 调试程序的本地虚拟机&#xff…

安卓手机网页 字体垂直方向对齐_初学Excel办公软件字体对齐调整

今天我们依然讲解Excel办公软件的字体对齐调整,上一节我们讲过在菜单栏的上方就可以看到十个功能,然后我们根据这十个功能的调解我们所需要的文字对齐,或者是居中对齐,顶端对齐等等。还有另外一种操作方法,也是方便快捷…

英伟达_如何超越英伟达?

从AI热潮中率先获益的英伟达,其GPU参数和性能频繁出现在不少AI芯片发布会的对比图中。这是在缺乏AI芯片衡量的标准时,新的AI芯片证明自己实力的不错方式。不过,声称性能超越英伟达GPU的创新AI芯片不少,但想要超越英伟达非常困难。…

100多个基础常用JS函数和语法集合大全

网站特效离不开脚本,javascript是最常用的脚本语言,我们归纳一下常用的基础函数和语法: 1.输出语句:document.write(""); 2.JS中的注释为//3.传统的HTML文档顺序是:document->html->(head,body)4.一个浏览器窗口中…

中职计算机说课稿三篇,精选中职计算机说课稿三篇-20210609060707.docx-原创力文档...

PAGE / NUMPAGES精选中职计算机说课稿三篇中职计算机说课稿(一)位评委老师你们好!我是来自XXX职业中专计算机专业的老师XXX,今日我说课的题目是?《电子表格基本操作》?本节课出自高等训练出版社出版的《计算机应用基础》(windowsXPOfficexx?版)课本中第五章第?2…

在struts2中push方法的使用_【干货】网版印刷中水墨使用注意事项及助剂使用方法...

导LEAD语在印刷生产中,水性油墨的黏度、干燥速度和PH值等等都会直接影响印刷质量,那么具体到网版印刷中,在使用水性油墨时应该注意哪些问题呢?常用的印刷助剂都有哪些特点和使用方法?编辑:华印纸箱彩盒 小张…

限定概率抽奖_守护星已点亮,内测皮肤得到没?从天美抽奖概率分析:地址什么梗...

声明:原创文章,禁止抄袭,违者必究!大家好,我是你们的小抖。本次五五开黑节最引人注意的活动,当然不是超云龙胆新皮肤了。小抖觉得大家应该与我想的一样:内测皮肤。小抖点亮了所有守护星&#xf…

完美汽配管理系统v12服务器,完美汽车维修4S店管理系统

完美汽车维修4S店管理系统是一款十分不错的汽车修理系统,他可以帮助用户去处理好汽车维修,客户信息管理等问题,所以快来下载试试吧!软件介绍完美汽车维修4S店管理系统是款界面简洁大方且主要应用汽修行业的管理软件,完…

JPA中的@MappedSuperclass

说明地址:http://docs.oracle.com/javaee/5/api/javax/persistence/MappedSuperclass.html 用来申明一个超类,继承这个类的子类映射时要映射此类中的字段,可以当做是对entity抽取封装的类。如果子类想重写此类的映射信息,可以使用…

调用另一个cpp的变量_再谈条件变量—从入门到出家

再谈条件变量—从入门到出家C语言--条件变量条件变量是在线程中以睡眠的方式等待某一条件的发生;条件变量是利用线程间共享的全局变量进行同步的一种机制:一个线程等待"条件变量的条件成立"挂起另一个线程使"条件成立"条件变量的使用…

python 测试端口连通_Python语言 实现端口连通性检测

本文主要向大家介绍了Python语言 实现端口连通性检测,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。# -*- coding: utf-8 -*-#!/bin/env python#AUTHOR:karl#DATE:2018-1-19#VERSION:V1.0######################import timeimport osimp…

table每行自动触发ajax,table.ajax.reload()成功后未触发:function()

简介我正在使用json,ajax和php进行datatables.net jquery服务器端处理。我可以单击行按钮,然后从数据库中删除该行。但是,该页面永远不会使用ajax.reload();刷新页面。问题此代码:console.log("success function data reache…

不同page页面选择不同页面模板的方法

仿制一个企业站的时候发现该站用了很多page页面,而且个别页面的样式不相同,同时区别于post文章页面,其实不同之处就在于每个页面的xhtmlcss的不同,关键是page模板选择的问题,恒宁总结了以下两种方法。 第一种&#xff…