点击解锁VIP可享全站免费下载 零基础搭建绿幕直播间卖货赚钱 闪豚AI训练★批量生成原创好文章 本广告位待租本广告位待租待租
点击解锁VIP可享全站免费下载 零基础搭建绿幕直播间卖货赚钱 高质量SEO原创文章生成☆过AI检测 本广告位待租本广告位待租待租
点击解锁VIP可享全站免费下载 零基础搭建绿幕直播间卖货赚钱 NLP原创SEO文章AI自动生成教学 本广告位待租本广告位待租待租

温馨提示:需广告位请联系广告商务经理

网络小说生成器网页版,教你如何用 Python 爬取网页制作电子书

使用Scrapy抓取电子书怎么抓取数据,首先我们要看从哪里取,打开《修真小主播》的页面,如下:有个目录页签,点击这个页签可以看见目录,使用浏览器的元素查看工具,我们可以定位到目录和每一章节的相关信息,根据这些信息我们就可以爬取到具体的页面:获取章节地址现在我们打开xzxzb.py文件,就是我们刚刚创建的爬虫:#-*-coding:utf-8-*-importscrapyclassXzxzbSpider(scrapy.Spider):name='xzxzb'allowed_domains=&n

使用 Scrapy 抓取电子书

如何抓取数据?首先,我们要看从哪里得到它。打开《修真小主播》页面,如下图:

有一个目录选项卡。点按此标签以查看目录。使用浏览器的元素查看工具,我们可以找到目录和每一章的相关信息。根据这些信息,我们可以抓取到特定的页面:

获取章节地址

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

#-*-编码:utf-8-*-

进口废品

classXzxzbSpider(scrapy。蜘蛛):

name='xzxzb '

allowed_domains=['qidian.com']

start _ URLs=[' http://qidian.com/']

defparse(自身,响应):

及格

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

defparse(自身,响应):

pages=response . XPath('网络小说四大名著//div[@ id=' j-catalog wrap ']//ul[@ class=' cf ']/Li ')

forpageinpages:

url=page.xpath('。/child : a/attribute : href’)。提取()

printurl

及格

从网页中获取DOM数据有两种方法,一种印章生成器是使用CSS选择器,另一种是使用XML xPath查询。

我们在这里生成器网名使用xPath。请自网络小说作家排行榜学相关知识。看看上面的代码。首先,我们通过ID获取目录框,并获取cf类以获取目录列表:

pages=response . XPath('//div[@ id=' j-catalog wrap ']//ul[@ class=' cf ']/Li ')网页游戏前十名

然后,遍历子节点,在li标签中查询子节点A的href属python123性,最后打印出来:

forpageinpages:

u生成器网名rl=page.xpath('。/child : a/attribute : href’)。提取()

printurl

这样就可以说是写好了爬章路径的小爬虫。使爬取网页数据用以下命令运行xzxzb cr网页游戏awler来检查结果:

scrapycrawlxzxzb

此时,我们的程序可能有以下错误:

importerror : nomodulenamed win32 API

运行以下语python安装教程句:

pipinstallpypiwin32python安装教程

屏幕输出如下:

.

[u '//read . qidian.com/chapter/murzjqcy 6 myoloery 3 wdhg 2/WRR dun 6 auilobdflr 9 quqa 2 ']

[u '//read . qidian.com/chapter/murzjqcy 6 myoloery 3 wdhg 2/Jh-j 5 usgyw 62 ujcmpdsvga 2 ']

[u '//read . qidian.com/chapter/murzjqcy 6 myoloery 3 wdhg 2/5yxhdbvg 1 imagfxrmrujdw 2 ']

[u '//read . qidian.com/chapter/murzjqcy 6 myoloery 3 wdhg 2/fw 5 ebekat-76 itti _ ilq 7a 2 ']

[u '//read . qidian.com/chapter/murzjqcy 6 myoloery 3 wdhg 2/ksf H5 vuti 6 PWR jbx 3 wa 1 aa 2 ']

[u '//read . qidian.com/chapter/murzjqcy 6 myoloery 3 wdhg 2/-mpkj 01 GPP 1 p 4 rpq 4 FD 4k q 2

9;] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/MlZSeYOQxSPM5j8_3RRvhw2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/5TXZqGvLi-3M5j8_3RRvhw2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/sysD-JPiugv4p8iEw--PPw2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/xGckZ01j64-aGfXRMrUjdw2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/72lHOJcgmedOBDFlr9quQA2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/cZkHZEYnPl22uJcMpdsVgA2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/vkNh45O3JsRMs5iq0oQwLQ2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/ge4m8RjJyPH6ItTi_ILQ7A2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Y33PuxrKT4dp4rPq4Fd4KQ2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/MDQznkrkiyXwrjbX3WA1AA2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/A2r-YTzWCYj6ItTi_ILQ7A2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Ng9CuONRKei2uJcMpdsVgA2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/Q_AxWAge14pMs5iq0oQwLQ2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/ZJshvAu8TVVp4rPq4Fd4KQ2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/hYD2P4c5UB2aGfXRMrUjdw2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/muxiWf_jpqTgn4SMoDUcDQ2'] [u'//read.qidian.com/chapter/MuRzJqCY6MyoLoerY3WDhg2/OQQ5jbADJjVp4rPq4Fd4KQ2'] >...

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

章节页面分析

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

如果说章节信息爬取网页设计使用的 parser 方法,那么我们可以给每一个章节内容的爬取写一个方法,比如:parser_chapt网络小说的弊端er,先看看章节页面的具押韵生成器体情况:

可以看到,章节的整个内容在类名为 main-text-wrap 的 div 标签内,标题是其中类名为j_chapterName网页的 h3网页历史记录在哪里 标签,具体内容是类名为read-content j_readContent的 div 标签。

python基础教程着把这些内容python安装教程打印出来:

#-*-coding:utf-8-*-
importscrapy
classXzxzbSpider(scrapy.Spider):
name='xzxzb'
allowed_domains=['qidian.com']
start_urls=['https://book.qidian.com/info/1010780117/']
defparse(self,response):
pages=response.xpath('//div[@id="j-catalogWrap"]//ul[@class="cf"]/li')
forpageinpages:
url=page.xpath('./child::a/attribute::href').extract_first()
#yieldscrapy.Request('https:'+url,callback=self.parse_chapter)
yieldresponse.follow(url,callback=self.parse_chapter)
pass
defparse_chapter(self,response):
title=response.xpath('//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()').extract_first().strip()
content=response.xpath('//div[@class="main-text-wrap"]//div[@class="read-contentj_readContent"]').extract_first().strip()
printtitle
#printcontent
pass

上一步,我们获取到了一个章节生成器函数地址,从输出内容来看是相对路径,因此我们使用了yieldpython123 respo网页游戏中心nse.follow(u网页无法访问rl, callback=s爬取豆瓣电影top250elf.parse_chapter),第二个参数是一个回调函数,用来处理章节页面,爬取到章节页面后我们解析页面和标题保存到文件。

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

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

注意,response.follow 直接返回一个 R网页无法访问equest 实例,可以直接通过 yield 进python保留字行返回。

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

defparse_chapter(self,response):
title=response.xpath('//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()').extract_first().strip()
content=response.xpath('//div[@class="main-text-wrap"]//div[@class="read-contentj_readContent"]').extract_first().strip()
#printtitle
#printcontent
filename='./down/%s.html'%(title)
withopen(filename,'wb')asf:
f.write(content.encode('utf-8'))
pass

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

数据整理

首先,我们网页被禁用了怎么解除爬取下来的章节页面排序不是很好,如果人工去排需要太多的时间精力;另外,章节内容包含许多额外的东西生成器网名,阅读体验不好,我们需要优化内容的排版和可读性。

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

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

defparse(self,response):
pages=response.xpath('//div[@id="j-catalogWrap"]//ul[@class="cf"]/li')
forpageinpages:
url=page.xpath('./child::a/attribute::href').extract_first()
idx=page.xpath('./attribute::data-rid').extract_first()
#yieldscrapy.Request('https:'+url,callback=self.parse_chapter)
req=response.follow(url,callback=self.parse_chapter)
req.meta['idx']=idx
yieldreq
pass
defparse_chapter(self,response):
idx=response.meta['idx']
title=response.xpath('//div[@class="main-text-wrap"]//h3[@class="j_chapterName"]/text()').extract_first().strip()
content=response.xpath('//div[@class="main-text-wrap"]//div[@class="read-contentj_readContent"]').extract_first().strip()
#printtitle
#printcontent
filename='./down/%s_%s.html'%(idx,title)
cnt='<h1>%s</h1>%s'%(title,content)
withopen(filename,'wb')asf:
f.write(cnt.encode('utf-8'))
pass

使用 Sigil 制作电子书

加载 html 文件

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

制作目录

文件网页历史记录在哪里中存在 HTML网络小说作家 的 h 标签时,点击生成目录按钮就可以python保留字自动生成目录,我们在前面数据抓取时已经自动添python语言加了python123平台登录 h1 标签:

制作封面

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

.

免责说明

本站资源大多来自网络,如有侵犯你的权益请提交工单反馈(点击进入提交工单) 或给邮箱发送邮件laakan@126.com 我们会第一时间进行审核删除。站内资源为网友个人学习或测试研究使用,未经原版权作者许可,禁止用于任何商业途径!请在下载24小时内删除!

给TA打赏
共{{data.count}}人
人已打赏
!
也想出现在这里? 联系我们
广告信息
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索