「这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战」
电商类网站爬虫,永远是爬虫圈必爬项目。今天我们就拿《孔夫子旧书网》练练手。
爬取目标源数据分析
本次要爬取的目标网址为 https://book.kongfz.com/Cxiaoshuo/v6/
,打开页面寻找分页数据,在下图所示位置可以进行页码切换。
在切换页码的同时,捕获到分页链接,并寻找分页规则。
1 | txt复制代码https://book.kongfz.com/Cxiaoshuo/v6w1/ |
提炼列表页地址模板为 https://book.kongfz.com/C{类别}/v6w{页码}/
。
上述内容梳理完毕,就可以对列表页进行采集爬取了,本次爬取分为三个步骤进行。
- 提取所有图书分类;
- 采集每个类别下的列表页(测试数据,只采集单一分类下的 5 页数据);
- 提取目标数据,例如图书名称,作者,出版社,出版时间,店铺名称等信息。
接下来按照步骤实现即可。
提取所有图书分类
通过开发者工具,捕获图书分类区域 HTML 代码,如下所示:
上述数据,可访问任意分类页即可获取,核心代码如下所示,其中 self.get_headers()
函数,可参考之前的博客,或者下载代码查阅。
1 | python复制代码import requests |
此时简单运行之后,就会得到如下清单,即孔夫子旧书网所有图书分类。
1 | txt复制代码xiaoshuo |
此时遍历该列表,即可获取所有图书列表页数据,学习阶段,可取其中一条进行分析,例如我选择的文学与小说分类,self.types = ["wenxue", "xiaoshuo"]
。
采集分类页静态页面数据
对于静态页面数据,采用之前的方法保存到本地即可,在 SSS
类中增加 get_detail
与 run
函数,页码由于数据量的原因,最大为 200,可以先设置为 5,便于爬取,下述代码在运行时,注意提前建立好 孔夫子
文件夹。
代码继续使用 session.get
方法,进行数据请求。
1 | python复制代码 def get_detail(self, type, page): |
运行代码,得到如下数据,实测过程中,并未发现反爬措施,为了便于测试,可针对性控制请求速度。
提取数据
最后对本地 HTML 进行操作,获取最终的目标数据。
在进行提取的时候,依旧是 CSS 选择器
的使用熟练程度起决定性作用,当然对于异常数据的处理,也需要注意一下。
1 | python复制代码# 数据提取类 |
提取过程中出现了部分异常数据,针对异常数据进行特殊化处理即可,例如下述截图数据。
学习阶段,就不再继续提取更多的数据,仅提取书名,作者和出版社。
1 | txt复制代码长篇小说:达哈士孔的狒狒(精装) [法]阿尔丰斯·都德 著;李劼人 译 四川文艺出版社 |
收藏时间
代码下载地址:codechina.csdn.net/hihell/pyth…,可否给个 Star。
==来都来了,不发个评论,点个赞,收个藏吗?==
今天是持续写作的第 201 / 365 天。
可以关注我,点赞我、评论我、收藏我啦。
本文转载自: 掘金