前天的文章发出之后有简友留言说,是看我的专题文章学习爬虫的,并告诉我,简书更新新版网站后,我是第一个讲解的,他当时能搜到的全是旧版本的文章。今天来详细说说简书的数据抓取。
学习Python爬虫离不开大量练习实战,爬~爬~爬,本着“所有网站皆可爬”的原则,只要你感兴趣的网站数据都可以拿来练习,一般在初学时大家练得比较多的是,豆瓣、知乎和新浪微博,堪称“爬手三大练手地”,但是近半年多来,爬取简书学习和练习的童鞋越来越多。
那大家对简书上哪些数据会比较感兴趣,其结构和关键点又是如何?在学习的爬虫中又需要注意哪些?
一、网站整体结构
我是从一个爬虫的角度来说的。基本可以归为以下几种类型页面:
-
第一类:首页,新上榜,7日热门,30日热门,专题页面
都属于(多个作者的)文章列表页,获得文章基本数据,可以获取数据进行分析:简书首页文章的阅读量分析,如果抓取了不同时间的可以做对比分析,如大家现在普通感觉文章上了首页阅读量比之前要少,究竟减少了多少,主要原因是什么?
上首页的热门文章的类型,标题有什么特点?
是哪些作者经常上首页,霸占了首页热点,有什么特点?还可以不同时间的对比分析,如半年前与现在对比。
这类分析比较难的是文章类型,简书对文章没有类型的标注,如TAG类型,只有专题的不同,但是专题之间有些还是有比较多的交叉重合。建议文章在发表时,作者可以设置文章类型标记。目前想对大量文章进行分类只能使用机器学习、NLP。
要获取专题收录情况,首页文章会显示一个主要的专题收录,在文章页面可以获取这篇文章的所有专题收录。
-
第二类:作者主页
这个页面的数据比较多,可分为:
1) 作者基本数据(用户基础数据):文章数、字数、粉丝数、喜欢数
简书作者大排名一类的分析文章,每隔一段时间都会有,也比较受欢迎,主要就是要获取这些数据。2)文章数据:包括作者的每篇文章数据:阅读量、评论数、获赞和打赏
曾有一个作者,因为出书的需要,要解自己所有文章的总阅读量和评论量,就帮助爬过一遍他的文章数据。
我之前写过用一键生成简书目录,简书连载作者福音: 一键生成连载目录和连载作品排行统计(Python爬虫应用)-
3)动态数据(timeline):可以获取,作者的注册时间,作者打赏他人、评论他人文章的情况,这些反应了用户的活跃情况。
我之前写过一篇文章,“简书首席评论员”的诞生与消失,就是找那些没有发表文章,却写了很多评论的用户。比较遗憾的是个人主页上没有更多的作者个人信息,这个相对于豆瓣、新乎、微博来说,个人信息是比较少的,如性别、年龄、学校、地域地址等。
-
4)消息中的数据:收到的喜欢和赞,关注
爬取这些数据需要登录,我使用的是Cookie的登录方式,避免了简书登录需要滑动解锁。这些数据可以分析,作者的粉丝、获赞的增长情况。
消息中的简信,这个我写过一个简信助手,Python实现的站内消息群发助手-V1.0,不过是针对旧版网站的。
消息中还可以爬取专题投稿收录情况,这个适用于专题运营者。
- 第三类:文章页
这个一般爬的不多,需要的情况是:- 统计一篇文章的字数
- 文章被专题的收录情况
- 爆文的评论情况
- 第四类:其他页
其他类型页面貌似就剩一个,推荐作者页
以下几篇文章,都是关于简书新版网站爬取的一些分析。
Scrapy抓取Ajax数据
Python爬取数据的分页分析
分析一个爬虫的分页问题
二、简书爬虫的效率
很多学习、练习Python爬虫的童鞋,都想过尽可能多的抓取用户,尽可能多的字段。
我的思路,是用最少的入口,获取最多的用户,采取的是爬取关键用户的粉丝方式。先不考虑注册时间,爬取用户timeline一些用户的作者太多。可以考虑的多个爬虫一起工作,分别爬取数据入库。目前没有更好的方式。
三、一个爬虫的自我修养
有爬虫就有反爬虫,相互斗争和较量。目前在简书上还没有被禁过,虽然我们使用各种防止被Ban的方法,伪装浏览器、使用代理IP,使用随机Cookie,selenium等,作为一个爬虫爱好者和学习者,有几点还是要特别注意:一 限制爬虫下载速度,二 避开用户使用期爬取,我一般都选择深夜时开始。
三、爬虫开发工程师的段位
上周在我们的微信群,数据虫巢 黄老师,给出一个爬虫工程师的段位,稍后他会有文章和其他形式更详细地分享。贴出来,与大家共勉。