Python实现某网站爬取小说(爬虫)

2023-10-30

该代码仅供学习交流!!

爬虫:

爬虫是一种自动化程序,用于从互联网上获取和提取数据。它模拟人类用户的行为,在网页上浏览和抓取信息,并将所需数据保存或处理。

下面演示的代码是爬取小说的

先看运行效果图

 下载完成后,直接合并为一个文件,超方便好吧,不是单个的文件看着麻烦

代码如下:

需要爬取指定小说就修改一下对应小说的编号即可

import requests
from bs4 import BeautifulSoup
import time

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}

ids = "16585"
url = f'http://www.qiuyelou.net/{ids}/'

def get_soup(url):
    # 发送请求获取页面内容,并返回解析后的BeautifulSoup对象
    response = requests.get(url, headers=headers)
    response.encoding = "utf-8"
    soup = BeautifulSoup(response.text, 'html.parser')
    return soup

def download_chapter(chap_url, title):
    # 下载章节内容
    retries = 3
    while retries > 0:
        try:
            chapter_response = requests.get(chap_url, headers=headers)
            chapter_response.encoding = "utf-8"
            chapter_soup = BeautifulSoup(chapter_response.text, 'html.parser')

            # 提取章节标题和内容
            chapter_title = chapter_soup.find('div', class_='title').h1.text
            idclass = chap_url.split("/")[-1].replace(".html", "")
            chapter_content = chapter_soup.find('div', id=f'content{idclass}').text

            # 将章节标题和内容写入文件
            with open(f"缓存/{title}.txt", 'a', encoding='utf-8') as f:
                f.write(chapter_title + '\n\n')
                f.write(chapter_content + '\n\n')
            print('已下载:', chapter_title)
            break
        except requests.exceptions.RequestException:
            print('请求失败,重试...')
            retries -= 1
            time.sleep(1)
    else:
        print('无法下载章节:', chap_url)

soup = get_soup(url)
title = soup.find('div', class_='title').h1.text
print('正在下载小说:', title)

chapter_urls = [f'http://www.qiuyelou.net/{ids}/{chapter["href"]}' for chapter in soup.select('dd a')]
print(chapter_urls)

for chap_url in chapter_urls:
    download_chapter(chap_url, title)

print('小说下载完成!')

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python实现某网站爬取小说(爬虫) 的相关文章

随机推荐

  • -128----127缓存,在栈中获取

    span style font size 13px package test span br style font size 13px br style font size 13px br style font size 13px span
  • nginx负载均衡的5种策略

    nginx负载均衡的5种策略 要理解负载均衡 必须先搞清楚正向代理和反向代理 负载均衡的几种常用方式 1 轮询 默认 每个请求按时间顺序逐一分配到不同的后端服务器 如果后端服务器down掉 能自动剔除 upstream backserver
  • 如何根据excel文档中的内容同步更新数据库中的数据

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 根据excel中的内容同步更新数据库中的数据 需求概述 一 解决思路 二 具体解决方案 1 使用navicat将excel导入到mysql数据库中 2 写SQL语句做更新操作
  • python中rfind函数作用_python中的rfind函数如何使用

    python中rfind函数的用法 rfind 函数用于返回字符串最后一次出现的位置 从右向左查询 如果没有匹配项则返回 1 具体使用方法如 print str rfind substr 0 10 函数描述 推荐教程 Python入门教程
  • Ubuntu系统无法联网问题

    在网上看到许多解决方案是修改网络配置文件 但是ubuntu系统的目录结构中甚至都没有对应文件 因此找到以下解决方案 能够顺利联网并进行sudo install 亲测有效解决方案 1 在虚拟机设置中将网络适配器修改为NAT模式 2 找到net
  • please check whether the configs are released in Apollo!

    项目启动一直报错 其他同事 其他模块都没有这个错误 关键信息如下 Cause status code 404 Could not find config for namespace appId m ln contractmanage clu
  • Java程序员必须要了解的七个开源协议介绍

    1 Mozilla Public License MPL License 允许免费重发布 免费修改 但要求修改后的代码版权归软件的发起者 这种授权维护了商业软件的利益 它要求基于这种软件得修改无偿贡献版权给该软件 这样 围绕该软件得所有代码
  • 【C++】模板定义位置引发未定义标识符 “E“

    代码如下 include
  • 为什么怕写代码(自己的亲身经历)

    下班了 坐在工位不知不觉就又想起了刚开始接触java编程的日子 其实我觉得这个毛病也不在少数人 因为在我上学的时候班里面分组做项目 基本都是什么情况呢 一人做好 全部就可以交任务了 最后导致了如果代码某个地方出错了 全班90 的都出错了 归
  • pytorch下载与安装(离线包版本)

    笔者因为实验需要 不同的模型需要不同版本版本的pytorch 于是安装pytorch就总是出现一个问题 那就是断 比如需要安装torch1 4版本 使用Anaconda Prompt尝试了几次 pip install torch 1 4 0
  • python中eoferror是啥错误,python怎么看错误类型是什么

    以下是python的错误类型的总结 希望能帮助到有需要的小伙伴 Python全部的错误类型 错误类型 说明 ZeroDivisionError 除 或取模 零 所有数据类型 ValueError 传入无效的参数 AssertionError
  • 【精华】详解Qt中的内存管理机制

    前言 内存管理 是对软件中内存资源的分配与释放进行有效管理的方法和理论 众所周知 内存管理是软件开发的一个重要的内容 软件规模越大 内存管理可能出现的问题越多 如果像C语言一样手动地管理内存 一会给开发人员带来巨大的负担 二是手动管理内存的
  • 人生百味-7:一个人干活,一群人催进度,谁之过?

    如果你曾经是程序员 我相信你会深有体会 如果你曾经是项目管理 我相信你会有感受 旁观的说 那是专业活 只有他能做得来 干活的说 对不起大家 还还需要一段时间查
  • 论文阅读-Attention Bottlenecks for Multimodal Fusion(多模态特征融合)

    一 论文信息 论文题目 Attention Bottlenecks for Multimodal Fusion paperwithcode https paperswithcode com paper attention bottlenec
  • 分组密码算法与DES算法

    目录 1 分组密码的含义 1 1 分组密码介绍 1 2 分组密码的含义 1 3 分组密码的要求 2 分组密码的设计思想 2 1 分组密码的设计思想 3 分组密码的基本特点 3 1 分组密码的基本特点 3 2 分组密码的迭代结构 3 3 子密
  • 网关ping不通

    一 ping 网关 ping 10 0 0 254 ping sendto Host is down ping sendto Host is down Request timeout for icmp seq 0 ping sendto H
  • windows批处理:路径以\结尾 + unix换行 + rem + %~dp0时会导致报错

    windows对unix和windows换行符都支持的 但是遇到一种情况对unix不支持 之前遇到过window10执行没问题 但到了win7却有问题 代码如下 set project dir name Lua515 rem dp0 aaa
  • 轻松穿戴 IMU嵌入宽松衣服里做动作捕捉

    在日常生活中 保持正确姿势能够有效促进血液循环并降低慢性疾病的患病风险 在康复环境中 姿势监测可以帮助医护人员评估病情和治疗手段的效果 从而改善患者的身体状况 在以往的研究中 往往要求IMU牢固固定在穿戴者的特定身体部位 对穿戴要求较高 操
  • codeblocks安装、使用、调试教程

    一 下载 官方下载地址 二 安装 运行codeblocks 20 03mingw setup exe或FossHUB 界面如下 点击 Next gt 点击 I Agree 如上图所示的选择组件界面 这时一定要勾选 MinGW Compile
  • Python实现某网站爬取小说(爬虫)

    该代码仅供学习交流 爬虫 爬虫是一种自动化程序 用于从互联网上获取和提取数据 它模拟人类用户的行为 在网页上浏览和抓取信息 并将所需数据保存或处理 下面演示的代码是爬取小说的 先看运行效果图 下载完成后 直接合并为一个文件 超方便好吧 不是