python request 爬虫爬取起点中文网小说

2023-11-16

1.网页分析。进入https://www.qidian.com/,点击全部,进行翻页,你就会发现一个规律,

url=https://www.qidian.com/all?orderId=&style=1&pageSize=20&siteid=1&pubflag=0&hiddenField=0&page=0(1,2,3,……)

那么我么可以这样写

url = https://www.qidian.com/all?orderId=&style=1&pageSize=20&siteid=1&pubflag=0&hiddenField=0&page='+str(start)+'


if __name__=='__main__':
    for i in range(1,6):
     gethtml(start=i*1)

2.获取小说列表页面源码。

import requests
from lxml import etree
import os
def gethtml(start):
    url = 'https://www.qidian.com/all?orderId=&style=1&pageSize=20&siteid=1&pubflag=0&hiddenField=0&page='+str(start)+''
    html = requests.get(url)
    page = etree.HTML(html.text)
    titlelist = page.xpath('//div[@class="book-mid-info"]/h4/a/text()')
    titlelinklist = page.xpath('//div[@class="book-mid-info"]/h4/a/@href')
    for title,titlelink in zip(titlelist,titlelinklist):
        if os.path.exists(title) == False:  # 如果以该小说名为名字的文件夹不存在
            os.mkdir(title)  # 则新建以该小说名为名的文件夹
        get_son_html(title,titlelink)

 

3.获取小说页面源码。

def get_son_html(title,titlelink):
    html = requests.get('https:'+titlelink)
    page = etree.HTML(html.text)
    son_titlelist = page.xpath('//ul[@class="cf"]/li/a/text()')
    son_linklist = page.xpath('//ul[@class="cf"]/li/a/@href')
    for son_title,son_link in zip(son_titlelist,son_linklist):
        save(son_title,son_link,title)

4.获取小说内容也源码并保存。

def save(son_title,son_link,title):
    html = requests.get('https:'+son_link)
    page = etree.HTML(html.text)
    content = '\n'.join(page.xpath('//div[@class="read-content j_readContent"]/p/text()'))
    filename = title + '\\' +son_title + '.txt'  #小说名,先存在小说文件夹中,再以章节取名,存为.txt文件
    print('正在保存小说……',filename)
    open(filename,'w',encoding='utf-8').write(content)

5.完整代码。

import requests
from lxml import etree
import os
def gethtml(start):
    url = 'https://www.qidian.com/all?orderId=&style=1&pageSize=20&siteid=1&pubflag=0&hiddenField=0&page='+str(start)+''
    html = requests.get(url)
    page = etree.HTML(html.text)
    titlelist = page.xpath('//div[@class="book-mid-info"]/h4/a/text()')
    titlelinklist = page.xpath('//div[@class="book-mid-info"]/h4/a/@href')
    for title,titlelink in zip(titlelist,titlelinklist):
        if os.path.exists(title) == False:  # 如果以该小说名为名字的文件夹不存在
            os.mkdir(title)  # 则新建以该小说名为名的文件夹
        get_son_html(title,titlelink)

def get_son_html(title,titlelink):
    html = requests.get('https:'+titlelink)
    page = etree.HTML(html.text)
    son_titlelist = page.xpath('//ul[@class="cf"]/li/a/text()')
    son_linklist = page.xpath('//ul[@class="cf"]/li/a/@href')
    for son_title,son_link in zip(son_titlelist,son_linklist):
        save(son_title,son_link,title)

def save(son_title,son_link,title):
    html = requests.get('https:'+son_link)
    page = etree.HTML(html.text)
    content = '\n'.join(page.xpath('//div[@class="read-content j_readContent"]/p/text()'))
    filename = title + '\\' +son_title + '.txt'  #小说名,先存在小说文件夹中,再以章节取名,存为.txt文件
    print('正在保存小说……',filename)
    open(filename,'w',encoding='utf-8').write(content)

if __name__=='__main__':
    for i in range(1,6): #爬取5页
     gethtml(start=i*1)

 

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

python request 爬虫爬取起点中文网小说 的相关文章

随机推荐

  • Java 单例类中的线程安全

    Singleton 是最广泛使用的创建型设计模式之一 用于限制应用程序创建的对象 如果是在多线程环境中使用 那么单例类的线程安全性就非常重要 在现实应用程序中 数据库连接或企业信息系统 EIS 等资源是有限的 应明智地使用以避免任何资源紧缩
  • Fail2Ban 如何保护 Linux 服务器上的服务

    介绍 SSH 是连接云服务器的事实上的方法 它耐用且可扩展 随着新的加密标准的开发 它们可用于生成新的 SSH 密钥 确保核心协议保持安全 然而 没有任何协议或软件堆栈是完全万无一失的 SSH 在互联网上如此广泛的部署意味着它代表了一种非常
  • 如何在运行 Ubuntu 的 VPS 上安装和使用 Composer

    Status 已弃用 本文介绍不再受支持的 Ubuntu 版本 如果您当前运行的服务器运行 Ubuntu 12 04 我们强烈建议您升级或迁移到受支持的 Ubuntu 版本 升级到Ubuntu 14 04 从 Ubuntu 14 04 升级
  • 如何在 Rocky Linux 9 上安装 Node.js

    介绍 Node js是用于服务器端编程的 JavaScript 运行时 它允许开发人员使用 JavaScript 创建可扩展的后端功能 这是许多人在基于浏览器的 Web 开发中已经熟悉的语言 在本指南中 您将了解在 Rocky Linux
  • Java 堆空间与堆栈 - Java 中的内存分配

    不久前我写了几篇关于Java 垃圾收集 and Java 是按值传递 之后我收到了很多电子邮件来解释Java堆空间 Java堆栈内存 Java中的内存分配它们之间有什么区别 您会在 Java Java EE 书籍和教程中看到很多对堆和堆栈内
  • Spring WebFlux - Spring 响应式编程

    Spring WebFlux是Spring 5中引入的新模块 Spring WebFlux是Spring框架中向反应式编程模型迈出的第一步 Spring 响应式编程 如果您是反应式编程模型的新手 那么我强烈建议您阅读以下文章来了解反应式编程
  • 如何在 Ubuntu 16.04 上设置 Apache 虚拟主机

    介绍 Apache Web 服务器是在互联网上提供 Web 内容的最流行的方式 它占互联网上所有活跃网站的一半以上 并且非常强大和灵活 Apache 将其功能和组件分解为可以独立定制和配置的单独单元 描述单个站点或域的基本单位称为virtu
  • Android 倒计时器示例

    在这个 android 倒数计时器示例中 我们将实现一个计时器对象来显示进度进度条 我们将在本教程中构建的应用程序是测验应用程序中的一个有用组件 其中以图形方式显示完成该级别的剩余时间 以增强用户体验 Android 倒计时器 Androi
  • 如何在 Ubuntu 18.04 上设置私有 Docker 注册表

    作者选择了阿帕奇软件基金会接受捐赠作为为捐款而写程序 介绍 Docker 注册表是一个管理存储和交付 Docker 容器镜像的应用程序 注册表集中容器映像并减少开发人员的构建时间 Docker 镜像通过虚拟化保证相同的运行时环境 但构建镜像
  • C 编程中的 fgets() 和 gets()

    介绍 我们都熟悉scanf 功能 它是适用于获取基本用户输入的主要功能 虽然scanf 在接受诸如以下输入时效果很好整数 字符 浮点数等等 在获取包含空格的字符串输入时 它肯定会落后 让我们看一个例子 include
  • Spring Bean 范围

    Spring Bean Scopes 允许我们更精细地控制 bean 实例的创建 有时我们希望将 bean 实例创建为单例 但在其他一些情况下 我们可能希望在每次请求时或在会话中创建一次 Spring Bean 范围 有五种类型春豆 sco
  • 如何在 Ubuntu 20.04 上安装和使用 Docker

    介绍 Docker是一个应用程序 可简化管理应用程序进程的过程容器 容器允许您在资源隔离的进程中运行应用程序 它们与虚拟机类似 但容器更便携 更资源友好 并且更依赖于主机操作系统 有关 Docker 容器的不同组件的详细介绍 请查看Dock
  • 针对Spring/Gradle启动失败的一些通用解决方案

    文章目录 0 前言 1 更改Gradle JVM的Java JDK 1 1 执行JUnit测试时 Gradle报错 0 前言 当你对Spring Gradle启动失败的错误信息一筹莫展时 不妨试试以下这些通用的解决方案 1 更改Gradle
  • SpringBoot在普通类获取Service或者DAO

    1手动创建工具类 package com lhw locktest util import org springframework beans BeansException import org springframework contex
  • 编程每日一题_C程序设计_零钱兑换

    描述 来源 MOOC C语言程序设计 浙江大学 翁老师 有改编 给定人民币整元数值 如1元 5元 10元 100元 将该币值的钱全部兑换为零钱 一角 两角 五角 且每次兑换每种面值的零钱均出现 请给出兑换方案 输出一种兑换方案 代码1 in
  • 设计模式---抽象工厂(AbstractFactory)模式

    1 名词解释 产品等级 指产品的类型一样 品牌不一样 例如空调是一种产品类型 美的空调与格力空调是不同的品牌 产品族 同一个品牌的不同产品 例如美的的空调 电饭锅 热水器属于同一产品族 这里引用一个图片来具体说明这两个名词解释 来自引用2
  • 超详细!腾讯NLP算法岗面经(已offer)

    作者 ZipZou 整理 NewBeeNLP 面试锦囊之面经分享系列 持续更新中 可以后台回复 面试 加入交流讨论组噢 写在前面 首先来段简单的自我介绍 2021届硕士 硕士期间未有实习经历 本科大三有过一次实习 小公司 可以忽略 本人投递
  • 龙芯2k1000la之固态硬盘重新分区

    当我们想为系统安装一些配置后发现我们想要安装到的磁盘分区满了时我们可以对固态硬盘进行重新分区 如下以up重装系统时 新系统压缩包太大无法在sda1解压为例 当我将 dev sda1挂载到disk文件夹并想要解压新系统时 提示该设备上已经没有
  • idea 注册码 在线生成方式

    已经有前辈搞了一个在线网站了 直接生成即可的 http idea iteblog com
  • python request 爬虫爬取起点中文网小说

    1 网页分析 进入https www qidian com 点击全部 进行翻页 你就会发现一个规律 url https www qidian com all orderId style 1 pageSize 20 siteid 1 pubf