利用python实现小说自由

一、用到的相关模块

1.reuqests模块

安装reuqest模块,命令行输入:

pip install requests

2.xpath解析

XPath 即为 XML 路径语言,它是一种用来确定 XML (标准通用标记语言子集)文档中某部分位置的语言。XPath 基于 XML 的树状结构,提供在数据结构树中找寻节点的能力。起初 XPath 的提出的初衷是将其作为一个通用的、介于 XPointer 与 XSL 间的语法模型。但是 XPath 很快的被开发者采用来当作小型查询语言。

简单的来说:Xpath(XML Path Language)是一门在 XML 和 HTML 文档中查找信息的语言,可用来在 XML 和 HTML 文档中对元素和属性进行遍历。

xml 是 一个HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 数据。

安装xml:

pip install lxml
二、实现步骤

1.首先我们打开一个小说的网址:凡人修仙之仙界篇免费阅读_凡人修仙之仙界篇最新章节目录笔趣阁

2.右击“检查” 查看下这个网页的相关代码情况

我们可以发现所有的内容都被包裹在<ul class="cf”> 的ul中。

右击复制出xpath路径

//*[@id="list"]/div[3]/ul[2]

通过xpath 解析出每个章节的标题,和链接。

3.根据对应的链接获取每个章节的文本。同样的方法找到章节文本的具体位置

//*[@id="txt"]

3.for 循环获取所有链接的文本,保存为Txt文件。

三、代码展示
import requests
from lxml import etree
def getNovel():
    headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36'};
    html = requests.get('https://www.qu-la.com/booktxt/17437775116/',headers=headers).content
    doc=etree.HTML(html)
    contents=doc.xpath('//*[ @id="list"]/div[3]/ul[2]') #获取到小说的所有章节
    for content in contents:
        links=content.xpath('li/a/@href') #获取每个章节的链接
        for link in links: #循环处理每个章节
            url='https://www.qu-la.com'+link #拼接章节url
            html=requests.get(url).text
            doc=etree.HTML(html)
            content = doc.xpath('//*[@id="txt"]/text()') #获取章节的正文
            title = doc.xpath('//*[@id="chapter-title"]/h1/text()') #获取标题
            #所有的保存到一个文件里面
            with open('books/凡人修仙之仙界篇.txt', 'a') as file:
                file.write(title[0])
                print('正在下载{}'.format(title[0]))
                for items in content:
                    file.write(item)
​
    print('下载完成')
getNovel() #调用函数
四、拓展思考

1.写一个搜索界面,用户输入书名自主下载对应的小说。

2.引入多进程异步下载,提高小说的下载速度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值