前言:
相信小伙伴们还记得《数据蛙每周交作业小组》专栏的群主凡人求索,组织了数据蛙每周交作业小组小组,通过有计划的输入,每周总结一篇数据类文章,分别投稿到疯狂数据分析专题,并坚持一年时间,具体计划请看零基础入门数据分析成员的新年计划。
《数据蛙每周交作业小组》已经成立有9个月多,目前发现文章的提交数量逐渐下降,在此想呼吁那些在这个专栏投过稿的小伙伴能重拾自己的学习热情,当初立下的Flag,让我们坚持下去,暗暗告诉自己:2019年,我一定要好好学习,天天向上,完成Flag!希望有更多的新朋友加入我们队伍中。
小编我在这做了一个爬虫+简单的分析,大家可以往下拉看看。
系统环境:
64位win10系统,64位python3.6,IDE位pycharm
数据获取
此前群主是采用了requests + BeautifulSoup + pymysql爬取数据蛙每周交作业小组一周提交的作业,然后保存至数据库中。
小编是用scrapy+scrapyd+pymysql 实现,为什么要用scrapyd呢?可以远程方便管理该爬虫,scrapyd还有定时的功能,另外还要实现数据爬下来后,通过pandas库做处理,做一个简易的数据报告,每周通过邮件或微信自动推送,因公司项目比较多,都是利用空余去弄,也会尽快实现这个功能,话不多说,我们看看下面。
爬取字段
name:作者昵称
title:文章标题
publish_time:发布文章时间
word_age:文章字数
comments_count:该篇文章获得的评论数
likes_count:该篇文章获得的喜欢数
views_count: 该篇文章获得的阅读数
URL: 该篇文章的链接
部分代码:
def start_requests(self):
for i in range(1,88):
yield Request(url=self.base_url.format(page=i),
callback=self.start_requests_two,
headers=self.headers)
def start_requests_two(self, response):
doc = pq(response.text)
container = doc('li .title')
for item in container.items():
next_url = 'https://www.jianshu.com' + item.attr('href').split('#')[0]
yield Request(url=next_url,
callback=self.parse,
headers = {'user-agent': helper.set_user_agent()}
)
def parse(self, response):
item = JianshuItem()
if response:
print(response.url)
doc = pq(response.text)
item['title'] = doc(' div.post div.article > h1').text() if doc(' div.post div.article > h1').text() else ''
item['name'] = doc('.info .name a').text() if doc('.info .name a').text() else ''
item['publish_time'] = helper.tran_time(doc('.publish-time').text()) if doc('.publish-time').text() else ''
note = doc('script ').text().split(';')
notes = json.loads(note[6].split("(function(){ var bp = document.createElement('script')")[0])
item['comments_count'] = notes['note']['comments_count'] if notes else ''
item['likes_count'] = notes['note']['likes_count'] if notes else ''
item['word_age'] = notes['note']['public_wordage'] if notes else ''
item['views_count'] = notes['note']['views_count'] if notes else ''
item['URL'] = response.url
yield item
查看作业的整体情况
import pandas as pd
file = '/jianshudata.csv'
df = pd.read_csv(file)
df.info()
查看作业的整体情况
截止本周一共提交了885篇文章,获取数据样本:
数据样本查看有多少位小组成员向数据蛙每周交作业小组提交过文章:
共有73位小组成员数据清洗:
把publish_time转datetime类型,再查看整体统计文章发布篇数:
查看文章提交最多的前十名:
前十名发布文章数最多的前十名分别是:cynthia猫 、1点点De小任性丶 、凡人求索 、Spareribs 、夜希辰 、奔走的蜗牛BI 、yimengtianya1 、Chad你要加油 、estate47 、孙小恒
作业提交时间幅度:
大部分人在周日提交作业
2019年的文章比2018年要多
我们看看谁的点赞数最多,看看前十名:
文章点赞数最多的前十名分别是:estate47、estate47、凡人求索 、凡人求索、凡人求索 、大石兄、 Hill_GM 、凡人求索、夜希辰、Chad你要加油
我们看看上周 '2019-07-22 - 2019-07-28',看看有哪些成员交作业了
有三名成员提交提交作业成员分别是:夜希辰、凡人求索、奔走的蜗牛BI
上周作业情况暂时写到这,后续每周会持续更新,尽快把这个完善好。
添加公众号【数据蛙DataFrog】,加入学习交流群,我们一起学习共进步,2019齐加油
网友评论