关于写作互联网的那些事儿爬虫专题

Python爬虫学习:简书签约作者知多少?

2016-05-15  本文已影响3535人  向右奔跑

这个周末用Python爬虫把简书上的签约作者信息、文章爬取了一遍,想对简书签约作者有一个整体了解,并进行数据分析,他们写作的频度是怎样的,写作的类型有哪些?他们最值得学习的地方有哪些?

下一个会是你吗?

一、爬取哪些信息?

爬取的信息包括爬出所有签约作者主页(latest_articles),签约作者发表的文章篇数、字数、粉丝数,收获的喜欢;他们在简书上发表第一篇文章的时间,在简书上写作的时间天数。

“首页热门”,“七日热门”,“三十日热门”文章中签约作者文章的占比数。

二 、爬虫从哪里开始?

简书上没有专门页面推荐展示“简书签约作者”,必须设置一个入口去爬取这些信息。我能找到一个专题是《简书签约作者新春大拜年》,这是2016年春节收录了10位简书签约作者的新春大拜年文章,显然现在不止这10位。

一开始设想的方案,是从“三十日热门”中的一篇文章开始,抓取这篇文章的“打赏支持”、“喜欢”和“评论”的用户,再顺着作者粉丝(或关注)往下爬取。但看过几篇文章,这种方法马上被否掉,因为打赏、喜欢和评论以及粉丝99%的都是一般特征用户(即读者,很少发表文章),相当于从简书大量用户中捞出“签约作者”,效率太低,如果要做简书一般用户的分析,这种方案可以考虑。

我把目标转向了“首页热门”,“七日热门”,“三十日热门”这个几栏目。既然简书没有专门的推荐简书签约作者,那他们必须靠文章来进行展现。如果把这几个栏目中文章的签约作者都抓取下来,应该能找到95%以上的简书签约作者。

这几个栏目首屏都是显示20条数据,页面上没有分页,只有一个“点击查看更多”,在代码找到分页显示的url,并有page参数。但在url地址栏试了一下,发现只修改page并不能获得正确的页面,而且也不知道总页数。

换一个思路,通过递归方法抓取页面的“点击查看更多”的url,直到页面上没有“点击查看更多为止”,这样首页热点是99条数据。拿到每篇文章作者的url。

递归调用获取“更多”url

获取到这个栏目文章作者的主页链接,再到用户主页爬取信息,判断是不是简书签约作者,如果是,抓取用户相关信息,发表的文章相关信息。

在作者页面通过看源代码,找到文章分页url,定位于最后一页最后一篇文章,抓取到作得发表第一篇文章的时间,第一篇文章的阅读数的评论数,计算出在简书上写作的天数。

这个分页url是有效的!

三、如何爬取到完整的数据?

这次我把爬取的数据写成CSV文件,方便查看、做数据分析。把“首页热门”(top/daily),“七日热门”(top/weekly),“三十日热门”(top/monthly)数据放在一起,去重后,找到的简书签约作者记录是32条。

5/15《首页热门》上简书签约作者的数据

这种方式爬取的数据量不大,找到的信息比手动搜索专题收录的数据多了一倍多。我随手翻阅了一下“成为简书签约作者”的文章,一篇文章中写道,她是第46位简书签约作者。我意识到爬取的数据量还不全。这时,第一栏数据,关注数,引起我的注意,原来以为是分析中最没有用的一个数据,我看了一下两位作者,发现,简书签约作者之间互关的比较多,从这“关注”数据中应该可以再抓取到一些数据。

就马上增加一个方法,把签约作者的关注的用户再爬取一次找出签约作者,再经过数据去重,最终得到63位简书签约作者的信息。

如果猜测一下的话,“热门”中抓取到的数据应该是“简书签约作者”中的活跃用户或新晋作者,互关数据中抓取的数据应该是加入时间靠前的,写作方向比较偏一点的。更多数据分析,另文详述,更有一些好玩有趣数据,以及怎样才能成为简书签约作者。

PyCharm 代码

总结

  1. 设计一个爬虫的入口很重要,关乎到数据抓取的效率。
  2. 对数据的查看过程中发现有效数据的隐藏点,再进行抓取。
  3. 这次仍然使用request,xpath,代码更熟练了一些。没有使用scrapy,主要是才刚刚开始,对于多数据的爬取处理不太熟悉。
上一篇下一篇

猜你喜欢

热点阅读