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

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

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

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

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 条评论
登录 后参与评论

相关文章

来自专栏数据科学与人工智能

【Python语言】Scikit-learn 快速入门

环境 ubuntu 12.04, 64 bits python 2.7 sklearn 0.14 准备 sklearn 快速入门的官方文档7。这个文档主要描述机...

2896
来自专栏云时之间

深度学习与神经网络:基于自建手写字体数据集上的模型测试

在上一篇文章中,我们使用mnist数据集去做了一个识别的小型神经网络,在今天的这篇文章里,我们将要通过使用自建数据集去检验上一篇文章的模型,从而真正的可以去应用...

4767
来自专栏机器之心

世界上最好的语言PHP:我也可以用OpenCV搞计算机视觉

就像许多开发人员一样,我也经常使用别人的工作成果(Medium 上的文章、GitHub 上的代码等),因此也很乐意与社区分享我的成果。写文章不仅是对社区的一种回...

1133
来自专栏专知

【下载】PyTorch 实现的YOLO v2目标检测算法

【导读】目标检测是计算机视觉的重要组成部分,其目的是实现图像中目标的检测。YOLO是基于深度学习方法的端到端实时目标检测系统(YOLO:实时快速目标检测)。YO...

4276
来自专栏程序员宝库

15 分钟破解网站验证码

作者: xiaochao 原文:http://www.bugcode.cn/break_captcha.html 概述 很多开发者都讨厌网站的验证码,特别是写网...

3547
来自专栏AI研习社

Github 项目推荐 | 由文本生成人脸图像 —— T2F

T2F 结合了最近的两个架构 StackGAN 和 ProGAN,用于从文本描述中合成面部,该项目使用 Face2Text 数据集,每个数据集包含 400 个图...

922
来自专栏数据小魔方

R语言可视化——用ggplot构造期待已久的雷达图

之前一直苦恼于ggplot函数无法制作雷达图,心想着既然饼图可以通过柱形图+极坐标模拟出来,为啥雷达图不行。 我尝试着用折线图+极坐标来模拟雷达图(之前在制作饼...

2766
来自专栏AI研习社

可应用的目标检测代码来了,一秒锁定你

计算机视觉是人工智能的一个重要领域。计算机视觉是一门关于计算机和软件系统的科学,可以让计算机对图像及场景进行识别和理解。计算机视觉还包括图像识别、目标检测、图像...

651
来自专栏区块链

15分钟破解网站验证码

概述   很多开发者都讨厌网站的验证码,特别是写网络爬虫的程序员,而网站之所以设置验证码,是为了防止机器人访问网站,造成不必要的损失。现在好了,随着机器学习技术...

1727
来自专栏WOLFRAM

Mathematica 11.1.1 中文版已发布

1233

扫码关注云+社区