【Python】轻松搞定小说文本爬虫乱码问题

2024-04-28 21:58

本文主要是介绍【Python】轻松搞定小说文本爬虫乱码问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天早上早早地过来就被盆友要求给下一部小说。

这样还不行,还要给她下载好。

给出主意万能主意,还不行。

正好最近学习了下爬虫,手痒痒尝试了下,顺带装个逼。没想到。。。


环境飞机票

飞机票:小说花千骨

前段时间总结的小说爬虫:【Python】基于Python3的爬虫----是时候下本小说看看了!

然后翻车了。

下载下来全是乱码,我也是醉了。有点抓狂,有点想揍站长了。。

乱码来源

查看原因

我将网页下载下来用文本打开,查看代码,是gbk编码,需要进行转码,这方面不清楚,查了下资料。

尝试通过encode直接转换成gbk格式,发现报错。

PS:爬取的所有网页无论何种编码格式,都转化为utf-8格式进行存储,与源代码编码格式不同所以出现乱码

编码区别  

  • UTF-8通用性比较好,是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。
  • UTF-8编码的文字可以在各国各种支持UTF8字符集的浏览器上显示,也就是必须两者都是utf-8才行。
  • gbk是是国家编码,通用性比UTF8差,GB2312之类的都算是gbk编码。
  • GBK包含全部中文字符;UTF-8则包含全世界所有国家需要用到的字符。
  • unicode是一种二进制编码,所有utf-8和gbk编码都得通过unicode编码进行转译,即utf-8和gbk编码之间不能直接转换。

附图如下:

乱码解决

python中编码转换用到了两个函数decode()和encode()

  比如:html=page_req.text.encode('iso-8859-1').decode('utf-8')
  encode('iso-8859-1') 是将gbk编码编码成unicode编码
  decode(‘gbk’) 是从unicode编码解码成gbk字符串

由于pycharm只能显示来自unicode的汉字,代码修改如下:

    def get_contents(self,target, filename = 'aaa.txt', title='xxx'):req = requests.get(url = target)html = req.text.encode('iso-8859-1')bf = BeautifulSoup(html,"html.parser")texts = bf.find_all('div', class_ ="contentbox", id = 'htmlContent')try:self.writer(filename, title, texts[0].text.replace('\n','\n'))except IndexError:print('index error')self.get_contents(target, filename, title)pass

结果

最后还是艰难的完成了任务。一个小问题花了一上午,还是技术不过关呀。

本文是在上一篇小说爬虫的基础代码上修改的。

附带飞机票:【Python】基于Python3的爬虫----是时候下本小说看看了!

结束语

欢迎大家关注我们的公众号,每天学一点技术。如果觉得有用给点个赞,谢谢!!

å¨è¿éæå¥å¾çæè¿°

这篇关于【Python】轻松搞定小说文本爬虫乱码问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944362

相关文章

python实现幸运大转盘 python实现抽奖

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.总结 一.前言 幸运大转盘是一种活动形式,广泛应用于各种场合,如商业促销、展览活动、企业庆典以及体育课堂等,旨在增加活动的趣味性和参与度。以下是对幸运大转盘的详细介

python微信小程序 uniapp高校打印店预约服务系统

本系统是针对校园自助打印开发的工作管理系统,包括到所有的工作内容。可以使自助打印的工作合理化和流程化。本系统包括手机端设计和电脑端设计,有界面和数据库。本系统的使用角色分为管理员和用户、店长三个身份。管理员可以管理系统里的所有信息。店长可以发布服务信息和查询用户的预约信息。用户可以浏览打印服务和打印店、预约打印以及管理预约信息、收藏信息。    开发语言:Python 框架:flask 同时

Ubuntu环境设置问题汇总

1、仓库 “http://cn.archive.ubuntu.com/ubuntu kinetic-updates Release” 不再含 ”无法安全的用该源进行更新,所以默认禁用该源“ 解决办法 :更换系统的镜像源 Ubuntu 的软件源配置文件是 /etc/apt/sources.list 打开这个文件夹,如果没有权限更改,那就使用下面这条命令进行提升权限 sudo chmod 77

echarts树图 改文本显示的地方的样式

树图改文本显示的时候的样式 虽然有点越改越丑 其中有一些失败的尝试 forammter 无法识别html元素 所以对于tooptips有用的html元素定义获取返回在这里写的话是不生效的 rich配置项里面的backgroundColor官方说支持 html元素和canvas元素 已经图片url 没有详细试验 官网地址 https://echarts.apache.org/examples/zh

记折磨我好几天的一个问题

先交代下背景吧: 我们的系统有很多板子用于跑测试,每一块板子对应一个docker 容器,在容器中跑shell脚本,会调用expect 脚本,在expect脚本中通过screen /dev/ttyUSBx 比特率 连接板子发送命令等,无异常 现在按照老板的要求,实现的话需要将一台服务器上的所有板子都得在一个docker 容器中,还得通过python 去调用shell,shell 调用expect

ICode国际青少年编程竞赛- Python-6级训练场-递归入门

ICode国际青少年编程竞赛- Python-6级训练场-递归入门 1、 def recur(n):# 边界条件if n<1:return# 额外动作Dev.step(n)Dev.turnRight()# 递归调用recur(n-1)recur(8) 2、 def recur(n):# 边界条件if n<1:return# 额外动作Dev.step(n)Dev.tu

Resin下ckeditor乱码问题处理

前段时间在Resin下部署Web项目中遇到如下问题,现写出来记录一下: 在Web项目中使用了ckeditor,但启动后发现ckeditor中文显示乱码,如下图:  明显就是编码不对应造成的问题,查询了好多地方,最终找到了解决方案 修改方法如下: 1、修改Resin下 配置文件 conf/app-default.xml把其中的  <servlet servlet-name="resin-fi

怎么批量下载视频?DY视频爬虫在线提取采集工具

短视频批量下载工具,具有多种模块和功能,方便用户快速批量下载短视频。该软件的详细介绍: 功能模块介绍: 一. 搜索词批量搜索下载 视频关键词添加:支持添加多个视频关键词进行全平台视频搜索。历史去重:可选择是否去除重复的视频。抓取分享链接:选择是否抓取分享链接。时间筛选:支持选择提取视频的发布时间段。定时重复抓取:可定时自动抓取所需视频。下载路径选择:用户可以选择下载地址。实时状态显示:显示搜

IE6下png背景不透明问题的综合拓展

前言:IE6不支持png背景透明或半透明。其解决方法有IE滤镜,纯粹的JavaScript,以及jQuery等,正所谓事非经过不知难,让png图片在IE6下背景透明显示只是第一步,如果对这些png图片做进一步的操作,往往会出现各类莫名的问题。而本篇文章讲详尽阐述png背景透明会出现哪些问题,一些自己的经验之谈和一些相关的拓展。内容较多,有一定的深度和广度,希望对大家有帮助。 目录: 一、可解决的

mysql排序问题

注:colName为要排序的字段名 mysql 英文或数字开头字段直接使用  order by colName (desc|asc),就可以实现倒序或者正序排序输出 但是,如果排序的字段的首个字符以中文开头,使用上面的排序会出现乱序的现象,可以使用下面的方式排序 order by CONVERT(colName USING gbk) COLLATE gbk_chinese_ci (desc|