您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > Python

用Python抓取小说目录和全文

时间:2020-09-16 13:18:28  来源:  作者:

本文要实现的案例是通过 requests 库抓取 斗破小说网 上指定的小说的目录和每一节的完整内容(只保留纯文本内容)。当抓取包含目录和小说内容的页面后,会通过正则表达式分析 html 代码,并提取出目录标题,对应的 url 以及文本形式的小说内容。现在进入斗破小说网,选择一篇小说,本文选择了 斗破苍穹 目录页面如下图所示:

网页看小说好多广告,今天用Python抓取小说目录和全文

 


真是岁月催人老呀,怀念当年偷偷捂着被子,逃课看这本小说的年纪。这部小说的目录很多,我只截图了一部分,第一个任务要完成下载这个目录页面的代码,并从中提取出小说的目录以及对应的 URL 。在网页中按 F12 或者是 检查 调出控制台调试界面,如下图所示:

网页看小说好多广告,今天用Python抓取小说目录和全文

 


这步完成之后,我们就可以将标题作为文件名,然后抓取 URL 对应的页面内容,并提取出文本形式的小说正文,然后将小说正文保存在以标题作为文件名的文件夹中。随便单击一个章节,进入小说正文,使用上面的方式调出调试窗口,查看正文对应的 HTML 代码,如下图所示:

网页看小说好多广告,今天用Python抓取小说目录和全文

 


使用 requests 模块的时候,需要进行安装,如下图所示:

网页看小说好多广告,今天用Python抓取小说目录和全文

 


根据前面的分析,示例代码如下:

# -*- coding: utf-8 -*-
# @Time    : 2020/5/9 19:03
# @Author  : 我就是任性-Amo# @FileName: 76.抓取小说目录和全文.py
# @Software: PyCharm# @Blog    :https://blog.csdn.NET/xw1680import requests  # 第三方模块 需要使用pip安装import re  # 导入正则模块import os
# 构造请求头headers = {    "User-Agent": "Mozilla/5.0 (macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, "
                  "like Gecko) Chrome/81.0.4044.138 Safari/537.36"
}# TODO 1.根据小说链接得到小说目录和对应的url
def get_catalogue(url):    # 发送请求    response = requests.get(url=url, headers=headers)    response.encoding = "utf-8"  # 指定编码
    chapter_info_list = []  # 用来存储获取到的所有url和章节标题数据    if response.status_code == 200:  # 判断请求是否成功
        li_list = re.findall(r"<li>.*</li>", response.text)  # 过滤 获取所有的li标签
        for li in li_list:
            # print(li)
            result = re.search(r'href="(.*)" title="(.*)"', li)  # 过滤出url和标题
            if result:
                # 组成完整的url                chapter_url = "http://www.doupoxs.com" + result.group(1)
                # 得到章节的标题                title = result.group(2)
                # 使用字典存储url和title                chapter = {"title": title, "url": chapter_url}
                # 将字典添加到列表中                chapter_info_list.append(chapter)    print(chapter_info_list)
    return chapter_info_list
# TODO 2.根据章节目录,抓取目录对应的url指定的小说正文页面
def get_content(chapter_info_list):    for chapter_info in chapter_info_list:
        # 发送请求        response = requests.get(url=chapter_info["url"], headers=headers)
        if response.status_code == 200:  # 判断请求是否成功
            # 判断小说文件夹是否存在            if os.path.exists("novel_斗破苍穹"):
                pass            else:
                os.makedirs("novel_斗破苍穹")
            content_list = re.findall(r"<p>(.*?)</p>", response.content.decode("utf8"))[1:-1]
            # 建立文件 并将小说正文写入文件中            with open("./novel_斗破苍穹/" + chapter_info["title"] + ".txt", "w", encoding="utf8") as file:
                # 将内容一行一行的写入文件中                for content in content_list:
                    file.write(content + "n")
if __name__ == '__main__':
    get_content(get_catalogue("http://www.doupoxs.com/doupocangqiong/"))

程序执行结果如下图所示:

网页看小说好多广告,今天用Python抓取小说目录和全文

 

很简单,有木有!

此文转载于:Amo Xiang

著作权归作者所有,如有侵权联系小编删除!

原文地址:https://blog.csdn.net/xw1680/article/details/106025946



Tags:Python抓取   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
本文要实现的案例是通过 requests 库抓取 斗破小说网 上指定的小说的目录和每一节的完整内容(只保留纯文本内容)。当抓取包含目录和小说内容的页面后,会通过正则表达式分析 H...【详细内容】
2020-09-16  Tags: Python抓取  点击:(134)  评论:(0)  加入收藏
▌简易百科推荐
近几年 Web3 被炒得火热,但是大部分人可能还不清楚什么是 Web3,今天就让w3cschool编程狮小师妹带你了解下 Web3 是什么?与我们熟知的 Web1 和 Web2 又有什么区别呢?web3.0什么是...【详细内容】
2022-07-15  编程狮W3Cschool    Tags:Web3.0   点击:(2)  评论:(0)  加入收藏
1、让我们一起来看下吧,直接上图。 第一眼看到是不是觉得很高逼格,暗黑画风,这很大佬。其实它就是------AidLearning。一个运行在安卓平台的linux系统,而且还包含了许多非常强大...【详细内容】
2022-07-15  IT智能化专栏    Tags:AidLearning   点击:(2)  评论:(0)  加入收藏
真正的大师,永远都怀着一颗学徒的心! 一、项目简介 今天说的这个软件是一款基于Python+vue的自动化运维、完全开源的云管理平台。二、实现功能 基于RBAC权限系统 录像回放 ...【详细内容】
2022-07-14  菜鸟程序猿    Tags:Python   点击:(3)  评论:(0)  加入收藏
前言今天笔者想和大家来聊聊python接口自动化的MySQL数据连接,废话不多说咱们直接进入主题吧。 一、什么是 PyMySQL?PyMySQL是在Python3.x版本中用于连接MySQL服务器的一个库,P...【详细内容】
2022-07-11  测试架构师百里    Tags:python   点击:(19)  评论:(0)  加入收藏
aiohttp什么是 aiohttp?一个异步的 HTTP 客户端\服务端框架,基于 asyncio 的异步模块。可用于实现异步爬虫,更快于 requests 的同步爬虫。安装pip install aiohttpaiohttp 和 r...【详细内容】
2022-07-11  VT漫步    Tags:aiohttp   点击:(15)  评论:(0)  加入收藏
今天我们学习下 Queue 的进阶用法。生产者消费者模型在并发编程中,比如爬虫,有的线程负责爬取数据,有的线程负责对爬取到的数据做处理(清洗、分类和入库)。假如他们是直接交互的,...【详细内容】
2022-07-06  VT漫步    Tags:Python Queue   点击:(34)  评论:(0)  加入收藏
继承:是面向对象编程最重要的特性之一,例如,我们每个人都从祖辈和父母那里继承了一些体貌特征,但每个人却又不同于父母,有自己独有的一些特性。在面向对象中被继承的类是父类或基...【详细内容】
2022-07-06  至尊小狸子    Tags:python   点击:(25)  评论:(0)  加入收藏
点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍。本文1553字,阅读约需4分钟 Hi,大家好,我是CoCo。在上一篇Python自动化测试系列文章:Python自动化测试之P...【详细内容】
2022-07-05  CoCo的软件测试小栈    Tags:Python   点击:(27)  评论:(0)  加入收藏
第一种方式:res = requests.get(url, params=data, headers = headers)第二种方式:res = requests.get(url, data=data, headers = headers)注意:1.url格式入参只支持第一种方...【详细内容】
2022-07-05  独钓寒江雪之IT    Tags:Python request   点击:(19)  评论:(0)  加入收藏
什么是python类的多态python的多态,可以为不同的类实例,或者说不同的数据处理方式,提供统一的接口。用比喻的方式理解python类的多态比如,同一个苹果(统一的接口)在孩子的眼里(类实...【详细内容】
2022-07-04  写小说的程序员    Tags:python类   点击:(28)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条