当当云阅读云书房电子书内容提取爬虫

一、引言

​ 根据相关法律法规,为了保护作者及版权方的正当权益,当当网电子书目前在PC端不支持下载功能,只能在线阅读。若您订购的电子书支持iPhone、iPad、Android、E-ink设备阅读,请您使用当当读书客户端登陆您的当当账户,之后点击页面左上角图书下载按钮,之后页面中会显示您已购买未下载的图书,请您点击下载即可。

当当云阅读是当当网旗下的电子书阅读平台,具有丰富的正版图书资源。为了保护读物作者和版权方的正当权益,应最大限度地防止相关电子书在互联网上非法传播。当当云阅读在PC端不支持下载,只能在线阅读;在智能手机、平板上需安装当当云阅读客户端进行在线阅读或缓存。

​ 但对大多数用户来说,仅仅能够阅读是不够的,在阅读过程中做批注、摘录等是常有的阅读习惯,但当当云阅读禁止用户复制、粘贴电子书内容,更不能导出到其他阅读器上。如果用户想要快速提取其内容,唯一的解决办法是:截取屏幕存为图片,然后使用OCR工具识别文字,手动校正误识点。——提取量少时这很有效,但如果想要获取章节乃至整本书籍,这就累死傻小子了。

​ 本文对当当云阅读PC端对电子书的保护方式展开研究,提出了一种比传统OCR更高效的电子书内容提取方案:无需截屏、OCR识别、手动校正,并保证提取内容的准确度为100%。基本思路是:

  1. 利用网络爬虫模拟登录云阅读网站以获取Cookies信息;

  2. ”破解“云阅读页面文字的反爬取策略;

  3. 解析数据并批量保存文字内容。

    本文提供的内容仅用于学习研究,请勿用于非法用途,否则后果自负。

二、分析过程

2.1 页面api解析

打开一本电子书,其链接如下:

http://e.dangdang.com/pc/reader/index.html?id=1901168632

打开浏览器的网络调试工具或其他抓包程序,点击翻页获取到页面载入的API

GET http://e.dangdang.com/media/api.go

Query String Parameters:

action getPcChapterInfo
epubID 1901168632 电子书id
permanentId 20210416104157326126993695645533813 商品id
consumeType 1
platform 3
deviceType Android
deviceVersion 5.0.0
channelId 70000
platformSource DDDS-P
fromPaltform ds_android
deviceSerialNo html5
clientVersionNo 5.8.4
token
chapterID 2 章节
pageIndex 1 章节页码
locationIndex 4 全局页码
wordSize 2
style 2
autoBuy 0
chapterIndex

其中关键参数有:chapterID、pageIndex、locationIndex,在批量爬取时按照章节、页码顺序遍历。

API返回内容:

{
   
	"data": {
   
		"chapter": {
   },
		"chapterInfo": {
   
			"status": "ok",
			"code": 0,
			"pageType": 0,
			"snippet": "......"
		},
		"systemDate": "1618485378339",
		"currentDate": "2021-04-15 19:16:18",
		"wordSize": 2
	},
	"systemDate": 1618485378339,
	"status": {
   
		"code": 0
	}
}

snippet字段内容是HTML标签,这些标签经过浏览器渲染构成了页面文字,内容截取如下:

<div class="wraper" style="width: 660px; height: 880px; position: absolute; left:0px; top:0px; overflow: hidden; ">
	<div class="text" style="width: 660px; height: 880px; position: absolute; left:0px; 
  • 7
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值