Python使用requests_html库爬取掌阅书籍(附完整源码及使用说明)

news/2024/12/28 4:02:38/
htmledit_views">

教程概述

本教程先是幽络源初步教学分析掌阅书籍的网络结构,最后提供完整的爬取源码与使用说明,并展示结果,切记勿将本教程内容肆意非法使用。

原文链接:Python使用requests_html库爬取掌阅书籍(附完整源码及使用说明)

确定目标

第一次做,就先随便找一本的某一页作为目标

任意选择一本进入到任意一页,通过开发人员工具,也就是F12,在元素中可以看到页面中的内容实际为引入的iframe,如图

图1

复制这个iframe链接,在另一个页面打开,可以看到,确实为书中的内容,如图

图2

确定使用什么库

同样的打开开发人员工具,然后刷新网页,在网络中可以看到,响应的是一个html页面,而不是像json一样的数据,也不是js内容,因此我们此次爬取应当是用requests_html库,如图

图3

分析页面

在元素栏,我们大致看下页面用到了什么标签,如图,可以看到还不少,特别对于这种编程类的书,可能小说类的书标签没这么复杂、繁多,包括了

h1~h5、div、p、pre、code、ul、img、strong,如图

图4

爬取页面测试

导入requests_html,简单的爬取下当前页面,看看是否有结果,注意headers中请务必替换为自己的Cookie,这个是用户登录掌阅后,个人的Cookie,而且是会失效的,代码与图如下

图5

html" title=python>python">from requests_html import HTMLSessionheaders={'Cookie': 'pc_yz_ireader_zypc_guid=4e74VQNTVVFWVVYJAwYGU1MEV1FbDABRXgxWUVBFDgMEChZVA1UkI1FUJRQBIHMATnAHc1IUICQMAE4iDAcCBnAJcl0LUVZDXQ; acw_tc=ac11000117345133024156602e0092fe3024a7908746542deb2cde133dcf3d; ZyId=53f28cda676292968b316; Hm_lvt_2583df02aa8541db9378beae2ed00ba0=1732523971,1733117980,1734513303; HMACCOUNT=640F76DB991E075B; pc_yz_ireader_userInfo=5a8aVVIDBAEIA1MFCFwDVlBVB1ZRUwYFBgICAwAADFAJHRdfWgkWREtWEXtZCAQVXUQMUlVZEggKAgUFVFUAVAZEXxZYAgYLGkEGUlEWFVIUY08TAEELEgkCDBZWQw0f; Hm_lpvt_2583df02aa8541db9378beae2ed00ba0=1734513504',  # 将 'your_cookie_here' 替换为实际的 Cookie 值'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}catchUrl = r"https://www.ireader.com.cn/index.php?ca=Chapter.Content&bid=12582074&cid=17"session = HTMLSession()
response = session.get(catchUrl, headers=headers)
print(response.html.html)

通过如上代码,我们获取了当页的元素信息并输出到了控制台,下面来逐步解析标签,结合html" title=python>python-docx库,将爬取的信息存入到word中

分析标签并输出

在<body>中可以看到所有内容其实都在一个class为h5_mainbody的div标签中,因此可以粗略的直接获取该div下的所有元素,代码与图如下

html" title=python>python">session = HTMLSession()
response = session.get(catchUrl, headers=headers)eles=response.html.find(".h5_mainbody *")for ele in eles:print(ele) #输出每个元素

图6

完整源码与使用方式

完整源码

行数有点大,这里就不直接贴出了,我保存在了夸克盘中(请勿肆意非法使用),完整源码见链接:

夸克网盘分享

使用方式:

如图,我这里以爬取《Python编程:从入门到实践》为例子

图8

可以看到本书的bid为12582074

最后一页的cid为207

因此我将这三个参数填入到源码中

此外,特别需注意的是cookie也要填入自己的,如图

图9

爬取结果

为了演示,我这里只爬取了50页,结果如图,可以看到,书本内容完整的爬取到了word中,且根据标题做了分级,还是很不错的

图10

总结建议

在这个爬取源码中,算是比较良好,能完整的爬取所有内容,我个人认为不足的是图片处理还需优化,代码中的图片处理是直接获取的原图,为了美观,应当根据css来决定图片的大小,以上是幽络源的html" title=python>python使用requests_html库爬取掌阅的分析教程与完整源码提供,如有疑问,可加群询问,如有其他需求可站内留言。


http://www.ppmy.cn/news/1558687.html

相关文章

Java抽象工厂+单例模式

在前端时间开发过程中,有这样一个业务场景:A;B两家厂商设备进行设备信息的同步功能。 根据实际场景,做了抽象工厂+单例模式实现调用工厂时,生成不同的具体业务引用对象,实现方法的调用。 概念: 抽象工厂模式通过接口或抽象类来创建一系列相关或依赖对象。它定义了一组工…

武汉火影数字3D光影秀打造 “光+影+文化+故事+演艺“完美融合

3D光影秀打造利用虚拟现实技术、裸眼3D动画技术&#xff0c;创造出一种立体视觉效果&#xff0c;实现物体与动画的完美融合&#xff0c;产生强烈的视觉冲击力。 作为一种独特的艺术形式&#xff0c;光影秀能够打破传统艺术形式的界限&#xff0c;提供全新的视觉体验&#xff0c…

无需公网 IP 实现外部访问 Puter 一站式云平台

Puter 是一款隐私至上的个人云&#xff0c;它是开源桌面环境&#xff0c;运行在浏览器中&#xff0c;这款桌面环境具备丰富的功能、异常快速和高度可扩展性。它可以用于构建远程桌面环境&#xff0c;也可以作为云存储服务、远程服务器、Web 托管平台等的界面。 第一步&#xf…

<代码随想录> 算法训练营-2024.12.23

今日专题 动态规划 股票买卖 今日总结&#xff1a;动态规划得好好想一想需要什么状态&#xff0c;状态其实是用来描述子问题的 121. 买卖股票的最佳时机 解法一&#xff1a;动态规划 class Solution:def maxProfit(self, prices: List[int]) -> int:#dp[i][j] 表示当前拥…

华为云语音交互SIS的使用案例(文字转语音-详细教程)

文章目录 题记一 、语音交互服务&#xff08;Speech Interaction Service&#xff0c;简称SIS&#xff09;二、功能介绍1、实时语音识别2、一句话识别3、录音文件识别4、语音合成 三、约束与限制四、使用1、API2、SDK 五、项目集成1、引入pom依赖2、初始化 Client1&#xff09;…

Grok 2.0:马斯克的大模型挑战ChatGPT,AI竞争再升级

引言&#xff1a;马斯克Grok 2.0的横空出世 在人工智能&#xff08;AI&#xff09;领域&#xff0c;竞争从未停止。随着大型语言模型&#xff08;LLM&#xff09;的快速发展&#xff0c;各大科技巨头纷纷推出自己的AI模型&#xff0c;试图在激烈的竞争中占据领先地位。最近&am…

shell学习简介(一)

这里写目录标题 一、Shell简介二、Shell脚本注意事项三、入门脚本 一、Shell简介 Shell 脚本是一种用于自动化任务的脚本语言&#xff0c;通常在 Unix/Linux 系统中使用。通过结合条件判断和循环来实现命令的自动运行以完成一些相对固定的操作。 简单说&#xff1a;Shell就是一…

golang 指针demo

我根据实战经验总结了以下几点使用指针的建议&#xff0c;供你参考&#xff1a; 不要对 map、slice、channel 这类引用类型使用指针&#xff1b; 如果需要修改方法接收者内部的数据或者状态时&#xff0c;需要使用指针&#xff1b; 如果需要修改参数的值或者内部数据时&#x…