一、前3000名人员列表页
1)进入首页,找到博客园积分列表。如下图:然后我们就找到前3000名大神的博客地址了。通过,词云分析了下,好多大神的博客都迁移到个人博客上了。
2)分析页面结构:每一个td都是,一个人员。
第一个small为排名
第二个a标签是昵称和用户名,以及首页的博客地址。用户名通过地址截取获取
第四个small标签是,博客数量以及积分,通过字符串分离后可以逐个获取到。
3)代码:使用xpath获取标签及相关的内容,获取到首页博客地址后,发送请求。
二、各人员博客列表页
1)页面结构:通过分析,每篇博客的a标签id中都包含“TitleUrl”,这样就可以获取到每篇博客的地址了。每页面地址,加上default.html?page=2,page跟着变动就可以了。
2)代码:置顶的文字会去除掉。
3)对于每篇博客的内容,这里没有抓取。也很简单,分析页面。继续发送请求,找到id为cnblogs_post_body的div就可以了。
三、数据存储MongoDB
这一部分没什么难的。记着安装pymongo,pip install pymongo。总共有80+万篇文章。
四、代理及Model类
scrapy中的代理,很简单,自定义一个下载中间件,指定一下代理ip和端口就可以了。
Model类,存放的是对应的字段。
五、wordcloud词云分析
对每个人的文章进行词云分析,存储为图片。wordcloud的使用用,可参考园内文章。
这里用了多线程,一个线程用来生成分词好的txt文本,一个线程用来生成词云图片。生成词云大概,1秒一个。
六、完整源码地址
https://github.com/hao15239129517/cnblogs
scrapy的GitHub地址:
https://github.com/scrapy/scrapy
wordcloud的github地址:
https://github.com/amueller/word_cloud
附:mongodb内存限制windows:
https://www.captaincodeman.com/2011/02/27/limit-mongodb-memory-use-windows
领取专属 10元无门槛券
私享最新 技术干货