爬当当各分类下的五星图书

报名了爬虫课程,断断续续学了两个星期,才看完第一章。虽然技术还很菜,但一些基本的东西能够爬取了,也想趁这次作业,来尝试一下这段时间学习的知识。

这次作业选择爬取的网站是当当网,一方面是因为传说比较简单,另一方面也有比较多的图书数据,特别是五星图书,包含了各个领域最受欢迎的图书信息,对于寻找有价值的图书、分析好书的一些情况具有一定的价值。

废话不多说,先上准备爬取的页面链接:

https://link.jianshu.com/?t=http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-all-0-0-1-1

具体的页面如下图:

当当五星图书页面

我想爬取的数据是各分类(小说、中小学教辅、文学、成功/励志……)下面的五星图书信息(书名、评论数、作者、出版社、出版时间、五星评分次数、价格、电子书价格等等)。

为了抓各分类下的图书信息,首先看看点击各分类的时候,链接是否发生变化。经过测试,在不同的分类,链接都是不一样的,事实证明不是JS加载。

于是,第一步就是要获取不同分类的页面链接,先以“小说”类目作为样例来测试一下,复制xpath信息并获取链接。

复制"小说"类目的xpath信息

得到的xpath如下:

按照固定的套路,尝试获取类目标题和页面链接:

顺利地得到了类目的名称和链接:

尝试获取各第一个类目的名称和链接

到这里基本可以知道,当当网的反爬确实不严格,我甚至还没有设置Headers的信息,竟然也可以爬取到想要的数据。但最后在完整的代码中,还是把headers加上了,保险起见吧。

既然这样,其他的链接也可以通过这样的方式来获取,于是比较了一下多个类目的xpath,很容易发现规律。获取所有的类目链接如下:

爬回来的部分的链接

接下来就是分别爬取每个分类下的图书信息,以“小说”为例,其实翻页特别简单,给几个比较如下:

翻页也非常简单,只不过有一点点坑的是,爬回来的链接在代码中,需要对其翻页,就需要把链接构造出来。对返回来的链接进行分析,发现仅仅是中间有四个数字不一样。于是我把这几个数据取出来,在连接中传进去,这样可以构造通用的链接。

对于翻页的数量,粗略地看了一下各个类目的最大页数,最多的是25页,当然也有少于25页的。

于是构造出每个类目下都有25个页面的链接:

构造的翻页链接-小说

构造的翻页链接-中小学教辅

接下来就是去抓取不同页面的信息,没有异步加载,所以直接用xpath定位就OK。当然中间有一些小地方需要注意的是,每本书所包含的信息是不一样的,所以用xpath去获取的时候不一定能获取到,就会出错。

完整的代码如下:

爬取的数据如下:

爬取数据截图

爬取数据截图

总共10000多行数据,对应不同领域的10000多本高评分的书籍,当然会有一些重复计算,比如小说和文学,就有不少书是同时在这两个类目的。不过不管怎么说,都拿到了数据。

当当网本身没有什么反爬机制,所以爬取也比较顺利。唯一的小麻烦就是抓回来的链接继续翻页和其中一些书籍中部分信息缺失的处理。当然,这些对于稍微有点经验的同学来说都不是什么事。

这次写爬虫,确实也是一次比较系统地尝试,之前也没爬过这么多的数据。自知技术来不够拿到优秀作业和奖励,但是非常高兴能从中获得提升,大神们见笑了。

本文来自企鹅号 - DataCastle数据城堡媒体

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏王二麻子IT技术交流园地

一、VueJs 填坑日记之基础概念知识解释

概述 在最开始听说vuejs这个词是在2016年,当时天真的认为自己是个后端开发工程师不需要学习太多的前端知识,不过紧接着在2017年在公司就用到了vuejs。...

1888
来自专栏Python中文社区

Python=R+SQL/Hive?在数据分析与挖掘方面该选哪一个?

什么是R语言? R语言,一种自由软件编程语言与操作环境,主要用于统计分析、绘图、数据挖掘。R本来是由来自新西兰奥克兰大学的罗斯·伊哈卡和罗伯特·杰特曼开发(也因...

19410
来自专栏开源项目

码云小课堂 | 主流的开源协议有哪些?我们该如何选择?

主流的开源协议有哪些?我们该如何选择? License是软件的授权许可,里面详尽表述了你获得代码后拥有的权利,可以对别人的作品进行何种操作,何种操作又是被禁止的...

31610
来自专栏全华班

轻量级项目任务管理系统

--------------------------------------------------

584
来自专栏极客编程

8个写完以后就可以让你成为顶尖开发者的有趣应用程序

只有不断的努力才能成为伟大的开发人员。想象一下 ——你不能通过阅读大量关于健身,成为一个身体健康的人。你实际上需要去健身房,把时间和汗水放进去!同样的概念也适...

781
来自专栏linux驱动个人学习

开源许可证协议

最近新闻中的00后被指抄袭Github开源项目,新闻链接:http://money.163.com/17/0905/17/CTJBUNNV002580S6.ht...

3215
来自专栏DeveWork

拒绝全英文垃圾评论!仅用代码实现

从无人问津到略有评论,再到垃圾评论的“空袭”,这大概是每个wordpress博主都会经历的事。对付垃圾评论,一般人通常是安装wordpress官方的Akisme...

1938
来自专栏晨星先生的自留地

老司机带我飚车(2)一个有趣的漏洞PoC调试

1406
来自专栏知识分享

7-开发板接入小五物联实现远程控制(Air202模块+单片机)

https://www.cnblogs.com/yangfengwu/p/9337033.html

672
来自专栏更流畅、简洁的软件开发方式

【自然框架】之通用权限:用PowerDesigner重新设计了一下数据库,有ER图和表关系图

      好像以前做的那个数据库设计大家都没太看懂,究其原因似乎大家都比较习惯使用PowerDesinger来设计。而我用Excel画出来的图大家看着特别别扭...

2007

扫码关注云+社区