如何用Python爬取网页制作电子书,再也不怕闹书荒腾讯云开发者社区

有人爬取数据分析黄金周旅游景点,有人爬取数据分析相亲,有人大数据分析双十一,连小学生写论文都用上了大数据。

最近,AI的兴起让Python火了一把。实际上Python拥有庞大的第三方支持,生态系统非常完整,可以适用各种场景和行业。

这次,我们准备通过Python学习爬虫的开发,既简单有趣,而且是数据采集重要一环。同时脱离应用谈技术就是耍流氓,通过制作电子书学习数据的收集与整理,即能学到东西又有实用价值。

我们将通过爬取网页信息这个很小的应用场景来体会数据预处理的思想,并从中学习了解数据处理中抓取、处理、分组、存储等过程的实现。

1Python开发

1.1Windows下环境安装

熟悉Windows的安装Python不难,首先官网下载

有两个版本,根据需要选择自己的版本,现在越来越多的库开始支持3,所以建议下载3,这里我们以2为例。

双击下载的安装文件,一路Next即可,但是要注意勾选

__pip__

和Addpython.exetoPath

pip是Python生态体系里面的包管理工具,很多第三方库可以通过它方便的管理。

安装Finish之后,打开命令行窗口,输入Python:

如果出现这个界面说明安装成功了,如果出现下面的情况:

‘python’不是内部或外部命令,也不是可运行的程序或批处理文件。

需要把python.exe的目录添加到path中,一般是C:/Python27。

1.2Python之HelloWorld

目前我所接触过的所有编程语言都只要掌握三个内容就可以了:就是输入、处理、输出。我们已经安装好了Python,可以来一个最俗套的程序。

首先我们打开windows的控制台,然后输入python回车,然后输入如下代码:

我就问你俗不俗,好了,看结果:

根据我上面的说法,这个程序的输入就是HelloWorld字符串,处理使系统内部的输出处理,输出结果就是‘HelloWorld’。

我们还可以把代码写在文件里面:

执行效果:

我们说这个不是单纯的秀一下,以前没有用户界面的时候print可以作为人机交互用途,现在多数是用于调试,可以在程序运行的时候快速的输出程序结果或者过程结果。

1.3做菜与编程

现在有个很有意思的说法:生数据(原始数据)就是没有处理过的数据,熟数据(CookedData)是指原始数据经过加工处理后的数据,处理包括解压缩、组织,或者是分析和提出,以备将来使用。

这就像做菜生菜是输入,菜谱是程序,洗、切、烹饪等处理是程序执行过程,最后输出的熟菜。但不管生菜、熟菜都是菜,或者都是物质。

准备食材

在程序世界里的物质组成就是数据,就像有萝卜白菜等不同的品种一样,数据也有不同的类型。我目前所接触到的数据类型主要有以下几种:

物理类:数据在物理内存中的表达存储方式;

字节

数据类:数据类中的具体类型代表了不同精度和内存中不同的存储结构;

整数

浮点数

长整型

双精度

字符

字符串

逻辑类:就是逻辑真与逻辑假;

布尔值

复合类:由各基本的数据类型按照一定的结构组合而成的数据;

结构体

集合

字典

列表

序列

Hash表

……

这里我强调几点:

首先,这个分类不是某种语言特有,目前大多数编程语言都差不多,你理解这个思想就把自己的编程能力扩展了。

其次,它不需要专门记忆,编程是程序性的知识,运用的知识,是一种技能,你要做什么菜,你来这个分类查查需要什么原材料,再去具体研究,慢慢就会了,不做你记住了也没用。

器皿

食材已准备好了,可以下锅,可锅在哪里,你不能放在手里加工。程序里我们用变量、常量来盛各种数据,还有个作用域的问题,严格的厨房红案和白案是分开的,有时候砧板是不能互用的。

空值:四大皆空,什么也不是,不是0,不是长度为0的字符串,不是false,什么都不是;

变量:学过数学的人都应该有这个概念,反正差不多;

常量:固定不变的量,比如说π。

烹饪手法

刚查了下,我大天朝常用的烹饪手法多达20多种,我归纳了一下,编程大概就那么几种:

数值计算——加减乘除、位移等;

逻辑计算——逻辑真假判断;

过程计算——循环、嵌套、递归等;

数据处理——字符串、对象的操作。

菜谱与炒菜

菜都准备好了,下锅怎么炒,全靠菜谱,它就是程序,而我们按照菜谱炒菜这个过程就是程序的执行。

Python或任何一种编程语言都是博大精深,同时又是一种技能,不可能在使用之前完全掌握,也没必要。

我们需要知道的是我们想吃什么(程序要输出什么),然后再去菜市场买时才找菜谱(搜索引擎查资料),最后按照我们的需求加工(编程)。

1.4Python简单实践

首先我们来写三个Python文件:

hello.py

——事情的处理有落点,程序执行有入口,例如:main,这个文件可以看作程序的入口。

pkg.py

——程序可以分块编写,这样层次更分明,易于理解和维护,我们在pkg.py中编写一部分功能,作为演示模块。

init.py

——这是一个空文件,也可以写代码,表明当前路径是包。

接下来,我们来运行一下:

pythonhello.py

显示结果如下:

HelloWorld!

Hereispkg’stest

Mike

23

我们运行了hello.py文件,然后hello.py导入了包pkg;包pkg定义了一个方法和一个类,我们在hello.py文件里面调用了外部的方法和类。

2使用Scrapy抓取电子书

2.1写在爬取数据之前

好了,现在我们找一个在线看书的网站,找一本书把它下载到本地。首先,我们准备下载工具,就是Python的爬虫框架Scrapy。

2.2Scrapy安装

安装完Python后可以用以下的命令按照Scrapy,有些版本的Python没有带pip需要手动安装。

pipinstallscrapy

pip是Python的包管理器,大量的第三方包或者说功能可以通过这个工具来管理,所谓包就是模块化的功能集合,基本的技术参考实践里面的包。

我安装成功显示如下信息:

2.3新建Scrapy爬虫项目

Scrapy是Python程序,同时也是一套框架,提供了一系列工具来简化开发,因此我们按照Scrapy的模式来开发,先新建一个Scrapy项目,如下:

scrapystartprojectebook

Scrapy项目包含一些基础框架代码,我们在此基础上开发,目录结构类似下图:

2.4新建Scrapy爬虫

这时,Scrapy还不知道我们要爬取什么数据,所以我们要用Scrapy工具新建一个爬虫,命令如下:

scrapygenspiderexampleexample.com

下面实操,我们在起点中文网找一篇免费小说的完本,这里选择是《修真小主播》。

我们就在前面建立的Scrapy项目ebook下新建一个爬虫,命令如下:

cdebookscrapygenspiderxzxzbqidian.com

执行成功之后,在项目的spider目录下就多了一个xzxzb.py的文件。

2.5爬虫思路

怎么抓取数据,首先我们要看从哪里取,打开《修真小主播》的页面,如下:

2.6获取章节地址

现在我们打开xzxzb.py文件,就是我们刚刚创建的爬虫:

start_urls就是目录地址,爬虫会自动爬这个地址,然后结果就在下面的parse中处理。现在我们就来编写代码处理目录数据,首先爬取小说的主页,获取目录列表:

获取网页中的DOM数据有两种方式,一种是使用CSS选择子,另外一种是使用XML的xPath查询。

这样,可以说爬取章节路径的小爬虫就写好了,使用如下命令运行xzxzb爬虫查看结果:

scrapycrawlxzxzb

这个时候我们的程序可能会出现如下错误:

ImportError:Nomodulenamedwin32api

运行下面的语句即可:

pipinstallpypiwin32

屏幕输出如下:

爬取章节路径的小爬虫就写好了,但我们的目的不仅于此,我们接下来使用这些地址来抓取内容:

2.7章节页面分析

我们接下来分析一下章节页面,从章节页面我们要获取标题和内容。

如果说章节信息爬取使用的parser方法,那么我们可以给每一个章节内容的爬取写一个方法,比如:parser_chapter,先看看章节页面的具体情况:

可以看到,章节的整个内容在类名为main-text-wrap的div标签内,标题是其中类名为

j_chapterName

的h3标签,具体内容是类名为

read-contentj_readContent

的div标签。

试着把这些内容打印出来:

上一步,我们获取到了一个章节地址,从输出内容来看是相对路径,因此我们使用了

yieldresponse.follow(url,callback=self.parse_chapter)

,第二个参数是一个回调函数,用来处理章节页面,爬取到章节页面后我们解析页面和标题保存到文件。

next_page=response.urljoin(url)yieldscrapy.Request(next_page,callback=self.parse_chapter)

scrapy.Request不同于使用response.follow,需要通过相对路径构造出绝对路径,response.follow可以直接使用相对路径,因此就不需要调用urljoin方法了。

注意,response.follow直接返回一个Request实例,可以直接通过yield进行返回。

数据获取了之后是存储,由于我们要的是html页面,因此,我们就按标题存储即可,代码如下:

至此,我们已经成功的抓取到了我们的数据,但还不能直接使用,需要整理和优化。

2.8数据整理

我们先给章节排个序,因为目录中的章节列表是按顺序排列的,所以只需要给下载页面名称添加一个顺序号就行了。

可是保存网页的代码是回调函数,顺序只是在处理目录的时候能确定,回调函数怎么能知道顺序呢?因此,我们要告诉回调函数它处理章节的顺序号,我们要给回调函数传参,修改后的代码是这样的:

不知道大家注意到没有,前面的分析中目录已经提供了一个

data_rid

可以作为排序号,我们在目录分析页面获取这个序号,然后通过request的meta传入

parse_chapter

中通过response的meta获取传入的参数,然后文件名中加入这个顺序好完成了排序。另外,Sigil找那个通过H1标签来生成目录,需要目录的话,我们需要给内容添加一个h1标签。

还有可读性差的问题,也许我们下载的网页可能会包含一些乱七八糟的东西,我们有很多办法,也可以使用readbility等第三方库,这里就不深入了。

3使用Sigil制作电子书

电子书的制作,完全就是工具的应用,非常简单,这里把流程过一下,大家根据兴趣自行深入。

3.1Sigil简介

3.2ePub电子书简介

ePub(ElectronicPublication的缩写,意为:电子出版),是一个自由的开放标准,属于一种可以“自动重新编排”的内容;也就是文字内容可以根据阅读设备的特性,以最适于阅读的方式显示。

3.3加载html文件

要制作ePub电子书,我们首先通过Sigil把我们的抓取的文件加载到程序中,在添加文件对话框中我们全选所有文件:

内容都是HTML文件,所以编辑、排版什么的学习下HTML。

3.4制作目录

文件中存在HTML的h标签时,点击生成目录按钮就可以自动生成目录,我们在前面数据抓取时已经自动添加了h1标签:

3.5制作封面

封面本质上也是HTML,可以编辑,也可以从页面爬取,就留给大家自己实现吧。

3.6编辑元数据

编辑书名、作者等信息:

3.6输出ePub

编辑完成后保存,取个名字:

输出可以使用电子书阅读软件打开查看,我用的是Calibre,还可以方便的转换为相应的格式装到Kindle中阅读。

THE END
1.周食谱Excel表格模板周食谱Excel表格模板下载熊猫办公网站共为您提供74个周食谱设计素材以及精品周食谱Excel表格模板下载,汇集全球精品流行的周食谱Excel表格完整版模板,下载后直接替换文字图片即可使用,方便快捷的不二选择。https://www.tukuppt.com/excelmuban/zhoushipu.html
2.家常菜谱大全下载安装官方版app2024免费最新版如发现版本老旧,欢迎邮件反馈tousu@liqucn.com,或移步家常菜谱大全官网下载最新版 介绍 民以食为天,为你的那个TA准备几道好菜,俘虏TA的心吧! 民以食为天,为你的那个TA准备几道好菜,俘虏TA的心吧! 本应用精选一万多个家常菜谱,详细讲解,轻松DIY!1)中华菜系: 云贵菜、川菜、徽菜、沪菜、清真菜、湖北菜、粤菜https://m.liqucn.com/os/android/rj/500243.wml
3.做菜app软件大全学做饭app下载做菜教学视频app下载烘焙帮app 8.2/22.29M /2024-09-25 小白学烘焙下厨房的视频菜谱大全 下载 掌厨app 6.7/28.17M /2024-01-17 找菜谱,看视频,学做菜,品美食 下载 香哈菜谱app 8.8/46.71M /2024-11-21 官方推荐厨房菜谱食谱应用 下载 懒饭App2024最新版 8.8/14.43M /2024-07-31 一定有你喜欢的味道 下载 家常菜https://m.32r.com/zt/zfrj/
4.家常菜点餐基于小程序的家庭大厨家常菜点餐系统设计与实现(源码+数据主要项目:小程序、SpringBoot、SSM、Vue、Html、Jsp、Nodejs等设计与开发。 文末获取源码联系 基于java和小程序的家庭大厨家常菜系统设计与实现 一、前言 本家庭大厨微信小程序管理员功能有个人中心,用户管理,店铺管理,菜品信息管理,菜品分类管理,购买菜品管理,订单行管理,系统管理等。店铺和用户都可以在微信小https://blog.csdn.net/m0_66468899/article/details/144337136
5.食堂一周菜谱明细表制作软件食堂一周莱谱为了方便食堂工作人员制作一周菜谱,并为就餐者提供丰富多样的菜品选择,我们开发了一款名为“食堂一周菜谱明细表制作软件”的软件,该软件能够根据预设条件和要求,快速生成一周菜谱明细表,方便食堂工作人员进行参考和修改。 功能特点 1、自动生成一周菜谱:软件可以根据预设条件和要求,自动生成一周菜谱明细表,包括每天的菜https://www.coffee.cn/xican/post/378174.html
6.设计电子版菜谱用啥软件好Adobe Photoshop:** 强大的图像处理软件,适合设计、编辑和制作高质量的菜谱封面和内页。Canva:** 在线设计工具,提供可定制的菜谱模板和设计元素,便捷制作电子版菜谱。Microsoft Word:** 文字处理软件的佼佼者,可用于编写和编辑菜谱内容,包括文字、图片和表格。Google Docs:** 在线办公软件套件,可https://wen.baidu.com/question/1713543660705925340.html
7.电子菜谱app电子菜谱手机版下载安装手机阅读PS:单机版打印主要通过连接在无线路由上的网口热敏纸打印机实现,该功能仅可作为代替手写出单提高效率,并不能作为厨房打印使用,该方式打印出来的小票仍需要人工审核并交由厨房执行。 1. 综合应用成本低于传统菜谱:传统菜谱制作价格不菲,且须经常翻新、修改、更换,且要耗费大量的精力、财力;本电子菜谱按3-5年使用时间https://www.crsky.com/soft/34267.html
8.电子菜谱与烹饪APP:美食制作的智能助手生活用户在快节奏的现代生活中,烹饪不再仅仅是满足口腹之欲的简单行为,它逐渐成为了一种生活艺术,一种放松身心、享受创造乐趣的方式。而电子菜谱与烹饪APP的兴起,更是为这一过程插上了智能的翅膀,让美食制作变得更加便捷、高效且充满乐趣。 电子菜谱:数字时代的美食指南 https://chihe.sohu.com/a/795757715_122001933
9.ipad电子菜谱/无线平板点餐系统/安卓平板电子菜谱价格,厂家网络版,标准版 系统硬件要求 ipad,安卓平板电脑 技术支持 电子档使用手册,上门安装或可远程指导 批量供应ipad电子点餐软件/安卓平板电脑菜谱系统/电子菜谱制作 诚招全国代理商:无论您是广告公司,菜谱公司还是餐饮软件公司都可代理我们的产品,本产品在苹果商店(APP store)上有演示版,可免费下载。您只需在苹果商店上https://m.makepolo.com/product/100233457738.html
10.简单点点·电子菜谱平板点餐餐饮软件菜单制作《简单点点》是由蓝蕾软件专为中小型餐厅精心打造的平板电子菜谱软件,完美融合了纸质菜谱和点菜宝的功能,界面简约时尚,操作方便快捷。想要提高餐厅管理和客户体验?使用我们的电子菜谱和餐饮软件,快速制作精美菜单,提供更好的餐饮服务。https://www.jd-dian.com/
11.电子菜谱点餐系统素材网站图片免费下载电子合同签署协议开源版系统开发 101 云起SAAS 未来之王 北京西莫罗 企立品牌管理 hedanDesign2011 极域电子书包ios系统教师端功能展示与介绍 20 粉笔1205 swww12 桃花谷 摘要电子菜谱 1 谭笑美食摄影 TI系统 语音系统电子手册设计 6 a伟设计室 早餐机菜谱 电子食谱 画册 https://www.zcool.com.cn/tag/ZMjAxNzA3Ng==.html
12.卷王都在用!100款宝藏级AIGC工具分享,强烈建议收藏!!Stable Diffusion是一款免费、开源的AI图像生成器,目前最新版Stable Diffusion XL已经面向公众开始测试。相较之前的版本,新版的SD-XL用户只需使用较短的描述性Prompt就能生成图像,图像的人体结构、细节处理也更符合现实、更符合大众审美,生成的肖像图也更加清晰逼真。https://www.changbiyuan.cn/news/2023/news_0711/69335.html
13.步骤图电子版西点烘焙配方合集的做法电子版西点烘焙配方合集 电子版西点烘焙配方合集 用料 电子版西点烘焙配方合集的做法步骤http://mip.xiachufang.com/recipe/107294565/
14.《烘培宝典》11本美食菜谱类电子书打包下载543MB电子书打包分享大家好,这里我的打包分享为 您分享的是自己亲手打包的《烘培宝典》11本美食菜谱类电子书, 压缩后大小543MB,这11本电子书如 下: 吐司面包的烘焙技术 P185.pdf 小山进 专业烘焙师的魔法烘焙术.pdf 小山进+好吃的西点蛋糕秘诀+P98.pdf 快乐来烘焙(台).pdf 烘培宝http://mydbfx.com/?p=4667
15.红星电子音像出版社家常菜谱报价参数图片视频怎么样图书 烹饪/美食 烹饪/美食 家常菜谱 红星电子音像出版社 诺森甜点制作基础(日)小田真规子著9787830100643红星音像出版社 https://m.suning.com/item/0071170587/12427794296.html
16.中顶洗浴管理软件v8.7.2官方版深度系统官网中顶安卓电子菜谱 1.会所点单系统服务端设置,安装中顶会所电子点单系统服务端后,运行,此页面显示用户的操作日志 2.此页面可设置项目图片与项目介绍是否下载到平板电脑,在界面的右上角,可设置当前使用的项目谱,可从这里切换不同的项目谱,下载不同的项目资料和项目价格 3.此页面设置技师的图片资料 4.此页面显示https://www.deepinghost.com/soft/lvse/9371.html
17.订婚简单请帖邀请函订婚简单请帖邀请函电子版订婚简单请帖邀请订婚简单请帖邀请函 订婚简单请帖邀请函电子版 订婚简单请帖邀请函制作软件 订婚简单请帖邀请函微信免费相关模板列表,快易邀请函您提供大量订婚简单请帖邀请函 h5邀请函、电子请柬、电子请帖模板。https://www.taozhuo.com/hots/356168.html
18.美食杂志Allrecipes站长寄语:每期都有很多菜谱以及相应的制作烹饪流程图解 杂志信息: 杂志名:美食杂志_Allrecipes_2019年合集高清PDF杂志电子版百度盘下载 共7本 873MB 语言:英语 本数:7 每本页码数:114页左右 格式:true PDF,文字可以复制,支持复制取词 下载方式:百度网盘下载 杂志类型:2019年合集 美食健康杂志 英文原版杂志 发行https://www.goodbook100.com/Allrecipes-2019/
19.家庭菜谱家庭菜谱-(PDF电子书).pdf 关闭预览 想预览更多内容,点击免费在线预览全文 免费在线预览全文 菜谱集锦 甜点、主食11 法国甜点 11 水果塔 11 甜酒炖洋梨 11 奶茶 12 姜撞奶 (1) 12 姜汁撞奶 (2) 12 炒鲜奶 12 冻柿子冰激凌 13 鸡蛋茶(治嗓子疼嗓子哑) 13 米浆 13 鸡茸粟米羹 14 法式煎面包配牛奶(https://max.book118.com/html/2019/1121/6215004132002124.shtm