首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

百行代码爬取14.5W条豆瓣图书信息

前言

先上一波爬取的结果:

数据库中部分截图

实战

引入类库

分析页面请求

分析目标页面

打开开发者模式,查看链接

点击任意标签,分析页面请求

分别请求不同的标签页面,分析请求链接,可以发现如下规律:

由此,我们可以构建以下代码,以获取标签页面所有标签链接:

我们进入单个标签页面,分析图书列表页面,解析我们需要存储的字段

我们通过bs4解析我们需要的字段,如:出版时间,作者/译者,豆瓣评分,售价,评价人数等。

到这里,我们已经可以获取到单个tag下单页的图书信息,这个时候我们只需要加入翻页功能就可以实现单个tag下所有图书的信息爬取。

点击下一页,分析页面请求

可以看到页面多了start和type两个参数,同时start参数是从0开始并以20的偏移量递增的,我们按照这个规律可以构建一个生成器以生成start参数。

从文章的第一张图,可以看出不同的tag页有不同的数量的图书,那页面数量也不尽相同,这时应该如何构建生成器?

这个时候我们发现所有的tag在第50页之后都请求不出信息了,所以我们只需构建前50页的页面链接即可,第51页显示如下:

第51页的显示结果

反反爬

豆瓣的反爬简单粗暴,直接封IP,为了爬虫的健壮,可以使用代理或者随机Header+随机时延的方式,随机时延可以设置为30到40之间,不过这样大大影响了爬取速率,如果需要快速爬取可以采用代理+多线程+随机Header+随机时延这样就能避过反爬又能快速爬取。

留心

写给之后的自己

文章是写完代码后,重新回顾的时候写的,回顾之后发现有很多需要优化的地方,比如异常处理部分经常考虑不周导致在爬取的时候异常中断,不得不重新排查错误。还有爬虫的断点续传的功能应该去了解学习下。

尾言

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180603G1D56O00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券