在日常学习和阅读中,我们有时会需要将网络小说内容保存到本地,方便离线阅读。本文将通过Python 爬虫实战,手把手教你实现起点小说章节列表获取、章节内容爬取与本地保存的完整流程,同时结合实战细节讲解爬虫核心知识点,帮助大家巩固 Requests 请求、正则表达式、XPath 解析等关键技能。

一、实战准备

1.环境与库依赖

在进行爬取前,我们需要先安装两个核心第三方库:

  • requests:用于向目标网站发送 HTTP 请求,获取网页响应数据。
  • lxml:配合 XPath 语法解析 HTML 页面,高效提取目标数据

打开终端,执行以下命令完成安装:

pip install requests lxml

2.核心原理与注意事项

  • 原理:首先通过模拟浏览器向起点小说服务器发送请求,获取网页 HTML 源码,通过正则表达式提取章节链接,再通过XPath解析章节标题和内容,最终将内容写入本地文本文件
  • 注意事项
    1. 爬虫需遵守目标网站的robots.txt协议,本次实战仅用于学习交流,请勿用于商业用途或高频爬取,避免对服务器造成压力
    2. 起点小说部分内容可能存在反爬机制(如 Cookie 有效期、请求频率限制),本文代码已适配基础反爬,实际使用时可根据情况添加请求延迟

二、思路与解析

1.发送请求+伪装自身:

这里也可以通过打印print(response.status_code)查看状态是否为200

2.分析网页内容:

发现文章内容都在p标签下的span元素里,但若以这个为内容的xpath会发现输出为空

这是因为网页里的源代码是经过浏览器渲染的,故获取的xpath应该在编译器里输出查看

此时会发现内容是在p标签中,故xpath应更改为  //p/text()

对于标题则按下ctrl+f,搜索 第一章,再进行分析xpath该如何取

故标题的xpath应为  //h1[@data-v-f233f990 and contains(@class, 'title')]/text()

3.获取目录的url地址循环输出内容

经过初步分析,我们已经得到了一个章节的内容和标题,下面我们开始获取所有章节的内容

与上面类似:

·发送请求+伪装自己:

输出print(link_data)看一下每一章的url地址有什么共同点

发现url都是在data-cid里面,故使用正则表达式获取所有的url

·循环遍历保存到文件里

为了简便,可以取href的长度来看一共有多少章,len(href),用for循环输出前三章

五、总代码展示

六、总结

爬取起点最重要的是分清,网页元素与“源码”的区别 。 “源码”是浏览器从服务器直接获取的原始 HTML 文档,是页面加载前的静态文本。而网页元素是浏览器开发者工具中显示的实时 DOM 树,是经过 JavaScript 渲染、修改后的最终页面结构。

 

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐