收藏 | 一键下载N部小说,你要的免费都在这里

简介: 收藏 | 一键下载N部小说,你要的免费都在这里

大家好,我是欧K。本期给大家带来如何一键下载N部小说,以后再也不用一章一章,一部一部的下载小说了,希望对你有所帮助。


闲言少叙,直入主题

1. 网页分析

打开136书屋网址:https://www.136book.com/可以看到分类小说排行榜

1.1 榜单信息 选择任意分类小说,这里我们以第一类--情感小说排行榜为例:

按F12或者右键选择审查元素查看网页结构:

右键选择审查元素查看网页结构:可以看到,整个榜单存在于一个<table>表格标签中,每部小说信息在每个<tr>标签中,包含了小说的名称、链接、作者、状态等等,这里我们主要看名称链接


1.2 章节信息 以第一部小说《这吻超纲了》为例:

这部小说一共91个章节,我们需要依次获取每个章节的内容这里我们看到,所以章节的内容都包含在<ol>列表标签中,每个具体章节的内容(章节名称和内容链接)则包含在每个<li>标签中。

点击每个链接即可获得章节具体内容。


2. 爬取数据

准备工作,导入以下模块:

import os
import time
import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent

如果模块缺失,直接pip安装即可。2.1 获取排行榜小说信息

以前十部为例:

代码:

# 获取排行榜单

def getranklist(url,headers):
    allinfo = []
    try:
        r = requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        soup = BeautifulSoup(r.text, 'html.parser')
        lsts = soup.find_all('tr', attrs={'class': 'bg'})
        for lst in lsts[:10]:
            oneinfo = []
            nh = lst.find_all('td')[1]
            href = nh.a['href']
            name = nh.text
            oneinfo.append(name)
            oneinfo.append(href)
            allinfo.append(oneinfo)
        return allinfo
    except:
        if allinfo:
            return allinfo
        else:
            return None

结果:

2.2 获取每部小说所有章节信息

代码:

# 获取一部小说的所有章节名称及链接

def getallchapters(url,headers):
    allinfo = []
    try:
        r = requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        soup = BeautifulSoup(r.text, 'html.parser')
        info = soup.find_all('ol', attrs={'class': 'clearfix'})[1]
        lsts = info.find_all('li')
        for lst in lsts:
            oneinfo = []
            href = lst.a['href']
            name = lst.text
            oneinfo.append(name)
            oneinfo.append(href)
            allinfo.append(oneinfo)
        return allinfo
    except:
        if allinfo:
            return allinfo
        else:
            return None

结果:

2.3 获取具体章节信息

代码:

# 获取每章节具体内容

def getchapterinfo(info,headers):
    try:
        r = requests.get(info[1], headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
        soup = BeautifulSoup(r.text, 'html.parser')
        lsts = soup.find('div', attrs={'id': 'content'})
        print(lsts.text.lstrip('\n'))
    except:
        return None

结果:

3. 保存数据

要求:

  • 所有小说放在新建的books文件夹中(注意判断是否已经存在)
  • 将每部小说分别放在自己命名的文件夹
  • 按章节存储

代码:

for st in ranklist:
        try:
            filepath = os.getcwd() + '\\books\\' + st[0]
            if not os.path.exists(filepath):
                os.makedirs(filepath)
            onebookhrefs = getallchapters(st[1], headers)
            for info in onebookhrefs:
                onechapterinfo = getchapterinfo(info, headers)
                with open(f'{filepath}\\{info[0]}.txt', 'w') as f:
                    f.write(onechapterinfo)
        except:
            continue

结果:

with open 语句中使用了f-string格式化,具体用法可参考下面这篇文章(点击跳转):

技巧 | 5000字超全解析Python三种格式化输出方式【% / format / f-string】


完。

END


以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享到朋友圈让更多人知道哦

相关文章
|
7月前
|
开发工具 Python
国外的大学图书馆也像国内的一样吗?用Python脚本抓取期刊的主题标题!
国外的大学图书馆也像国内的一样吗?用Python脚本抓取期刊的主题标题!
仿做北大官网首页时出现的问题总结
仿做北大官网首页时出现的问题总结
仿做北大官网首页时出现的问题总结
|
域名解析 网络协议 程序员
全球最大的交友网站无法打开?这两个技巧来帮你。
全球最大的交友网站无法打开?这两个技巧来帮你。
按键精灵下载文华财经数据 一键下载
按键精灵下载文华财经数据 一键下载
96 0
|
存储 安全 云计算
一册通关!《阿里云产品V5.0》完整版下载
本期《阿里云产品V5.0》手册具体内容涵盖了基于飞天平台上的计算、数据库、存储&CDN、网络、安全、大数据、中间件、应用服务等全部产品,集结阿里云公共云产品家族全体成员,文中附下载地址,供开发者朋友们参考。
24320 0
|
运维 Kubernetes NoSQL
【0914 - 0918直播导视 | PPT 下载】云栖大会Offer来啦直通车&通关攻略、周二开源日第二期来啦
本周大家期待已久的云栖大会来啦,届时云栖大会offer来啦也为大家奉献了招聘直通车&通关秘籍,还等什么快来关注吧!
2029 0
|
安全
北大等多所高校网站被挂马 高考生浏览需小心
据瑞星“云安全”系统监测,6月10日,“北京大学档案馆”、“北京外国语大学 外国文学研究所”、“中国政法大学社会学院”等重点大学网站被黑客挂马,用户浏览这些网站后,可能感染病毒:Backdoor.Win32.Gpigeon2007.cyr(灰鸽子后门病毒),导致用户电脑可能被黑客控制。
1291 0