爬虫综合大作业

作业要求来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075

热门微博— —996与日剧《我要准时下班》

  至此,“996话题”在微博上被传得沸沸扬扬。微博上关于“996”的话题已超过千个,甚至更多。其中 “#如何鉴别996公司#”阅读量高达8181.5万,关于“996”的话题还有“#996奋斗者的日常#”、“#996者不配养宠物#”、“#996的护胃计划#”、“#古人笑对996#”、“去你的996”。

  工作时间周期长,上班几乎完全占据了一整个星期的时间。一周又一周,周而复始,新的一周又是工作的一周。996工作制就是压榨劳动力。

  即便《劳动法》规定,但仍有大部分公司、企业打着“加班”的旗号,实则是被迫性劳动。

  “过劳死”事件层出不穷,“工作996,生病ICU”。前段时间,程序员猝死在工作岗位上的新闻日益增多。“996抵制行动”的话题一下子被赤裸裸地推到风口浪尖。

  展示几条关于“996”热门微博内容:

  •  在广袤的代码森林里,996程序猿的生存状况如何?欢迎走进本期《动物世界》。(点赞数:26473)
  •  面对职场,面对996,如果你愿意它,你可能子就站不起了。(点赞数:6978)
  • 马云和刘强东谈996引发争议,网友神评论:月薪5w, 996像呼吸一样自然;月薪10w,办公室的甲醛让我着魔;月薪20w,公司就是家;月薪50w,我与公司共存亡;月薪100w,要亡公司先亡我。(点赞数:5536)
  • 996工作制”是削?李永乐老师讲加班机会成本】最近996工作制突然成了热议的话题。从个人角度讲,加班可以让自己的收入增加、职位提升,但也会牲了休息、读书、健身、恋爱。任何收益都有机会成本,这就是所谓的鱼与熊掌不可兼得。经济学研究认为,随着某种收益增加,它的边际成本会递增, 而边际效用会递减。边际成本等于边际效用的点是最优解,如果过分追求高收益,就会陷入自我剥削的陷阱。所以,适当加班有助于提升自己的生活品质,但是分加班则是自我的过程,是得不偿失的。(点赞数:3094)
  •  #996奋斗者们的日常# 996刷屏,不如看看这部日剧《我,到点下班》,剧如其名,这是你的心声吗?(点赞数:2637)

   

   热门微博的内容提到几个敏感的词— —剥削、过度加班、牺牲休息等。词云一眼望去便是工作、工作、996与加班。

  加班到底是剥削还是奋斗呢?但是,一定有一点要清楚,生活不仅只有工作,还有充分的休息与学习、娱乐等。仅仅只有工作的生活是乏味的,并且会局限了自身的发展和思想。

  在热门微博中提及到了今年的春季日剧《我要准时下班》,体现了当代社会工作制度的诟病与工作者对理想职场的追求。这部日剧的出现无疑是对"996"的反击。

  展示几条关于“日剧《我要准点下班》”热门微博内容: 

  • 分享一个最近追的日剧【我要准时下班】和我们现在所争议的996不同,女主东山是一个六点准时要下班赶着和半价啤酒的人"比起升职 朝九晚六 吃小笼包比较幸福"。她现在只想珍惜有人陪在身边的生活分享日常,周末可以一个人去享受温泉时光吃好吃的食物(这点我是真的很喜欢很喜欢了!)在听到有人因为过度劳累而死亡后,更加明白"人死了 就什么都没有了"。与她形成鲜明对比的是她的同事,一个努力勤奋全年无休就连生病也坚持工作的三谷。后来一次新人的"造反"使得三谷感觉自己怎么努力都无效继而回家旷工,女主来到她家讲述了她以前的经历。(点赞数:3120)
  • #我要准时下班# 第一话 你是否已经厌倦了#996#的上班模式?你是否也曾担心过突然暴毙于公司?你是否发现工作已经慢慢占据了你全部的生活?(点赞数:3084)
  • 《我要准时下班》——又名「我的理想职场生活」(点赞数:1280)
  •  日剧 #我要准时下班# 真是正巧的应景了最近的996话题。各种意义上的社畜真实。能在职场贯彻自己的原则,每天都能准时下班大概是每个上班人的理想状态吧(点赞数:1282)
  • 《我要准时下班》这个剧还真是正巧的应景了最近的996话题。各种意义上的社畜真实。佩服吉高这个角色在经历了过劳之后能再站起来,活的这么洒脱。能在职场贯彻自己的原则,每天都能准时下班大概是每个上班的人最羡慕的东西了吧。(点赞数:1165)

  

   而关于日剧《我要准时下班》的热门微博中提到最多的则是准时、下班。这完完全全给"996"一个下马威。这部日剧展示了生活不仅只有工作,还有小笼包(美食)......能够准时准点下班,去做自己想做的事、享受生活、不局限于职场的小小范围内,这几乎是所有人的愿景。但现实往往与理想状态背道而驰,剧中提到女主经常准时准点六点下班,却被勤奋的同事误会怠惰。但并非如此,女主每天高效率地完成了当日的工作,没有一刻是偷懒的。但是在现实中,即便能够准时准点下班,也很少有人踩点下班,通常会拖个半个小时。因为别人还在上班,你居然下班了。这种想法不可取。微博里看到的一句话——"千万不要用战术上的勤奋掩饰战略上的懒惰。提高效率与能力即正确之道。

  996与日剧《我要准时下班》关键词条形图对比:

  

        热门微博关于”996“的关键字的条形图

  

      热门微博关于日剧《我要准时下班》关键字的条形图

  根据以上的两个条形图的数据直观地看出微博上的内容大多是发表“996”的工作制的公司的加班,而不同的是日剧《我要准时下班》所表达的是准时下班。所以说,日剧《我要准时下班》是对"996"工作制的拒绝。不要去适应它,对"996"说不,是这部日剧对当下社会的一些公司压榨劳动力的现状的反击。

  996与日剧《我要准时下班》微博文章发表的用户所在地分布条形图对比:

  

           热门微博关于发表”996“的内容的用户所在地分布条形图

  

          热门微博关于发表日剧《我要准时下班》的内容的用户所在地分布条形图

  如上二图所示,不管是“996”话题还是日剧《我要准时下班》,用户大多分布在北上广深或者一些较为繁华的省份、地区。

  996与日剧《我要准时下班》微博文章发表的用户性别条形图对比:

   

   如图显示,微博用户关于“996”话题和日剧《我要准时下班》的讨论女性居多,也可以从中看出使用微博的用户中频率最多的还是女性。但是在“996”话题中,男性讨论活跃度明显增高。

  996与日剧《我要准时下班》韦恩图:

  

 

   不管是"996"话题还是日剧《我要准点下班》的话题,其中的共同点都有加班、上班、工作、职场、公司等,艺术源于生活。同时,不管是在中国的"996“中年轻人、奋斗的关键字,还是日剧中新人、努力,它们都有共通之处— —奋斗工作的中国年轻人,努力工作的日本职场新人他们都接受着职场的"996",他们都是社会热点的主体。公司宣扬的努力说奋斗论不过就是被迫要求加班的借口。奋斗与努力本身没有错,错的是以之为理由进行剥削与自我催眠— —只要奋斗与努力就一定会成功。然而,奋斗与努力仅仅是成功的必要非充分条件。

  如今,我们必须深刻明白对"996"适应即软弱。软弱即社畜(指在公司很顺从的工作,被公司当作牲畜一样压榨的员工)。

  人死皆空。

 

抓取数据代码如下:

  1 # coding=utf-8
  2 import requests
  3 import random
  4 import time
  5 import jieba
  6 import operator
  7 import pandas as pd
  8 from urllib.parse import urlencode, quote, unquote
  9 from pyquery import PyQuery as pq
 10 
 11 UserAgent = [
 12     "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
 13     "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; QQBrowser/7.0.3698.400)",
 14     "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.84 Safari/535.11 SE 2.X MetaSr 1.0",
 15     "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.71 Safari/537.1 LBBROWSER",
 16     "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36",
 17     "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0"]
 18 
 19 base_url = "https://m.weibo.cn/api/container/getIndex?";
 20 keyword = quote(input("请输入微博搜索的关键字:").strip(), safe=";/?:@&=+$,", encoding="utf-8")
 21 print("请耐心等待...");
 22 referer= "https://m.weibo.cn/search?containerid=100103type%3D1%26q%3D".format(keyword);
 23 containerid="100103type%3D60%26q%3D{}%26t%3D0".format(keyword);
 24 header = {"Host": "m.weibo.cn",
 25           "Referer":referer,
 26           "User-Agent": UserAgent[random.randint(0,5)],
 27           "X-Requested-With": "XMLHttpRequest"};
 28 
 29 #获取页面
 30 def get_page(page):
 31     params = {
 32         "containerid": containerid,
 33         "page_type": "searchall",
 34         "page": page
 35     };
 36     url = base_url + urlencode(params);
 37     try:
 38         respose=requests.get(url,headers=header);
 39         time.sleep(random.random() * 3);
 40         if respose.status_code==200:
 41             return respose.json();
 42     except requests.ConnectionError as e:
 43         print("错误信息",e.args);
 44 
 45 #解析动态页面
 46 def parse_one_page(json):
 47     if json:
 48         items=json.get("data").get("cards")
 49         if items:
 50             for item in items:
 51                 card_group = item.get("card_group");
 52                 for card in card_group:
 53                     dict_info = {};
 54                     mblog = card.get("mblog");
 55                     dict_info["id"] = mblog.get("id"); #获取微博的id
 56                     dict_info["attitudes_count"] = mblog.get("attitudes_count");  # 获取微博的点赞数;
 57                     if mblog.get("longText"):
 58                         dict_info["text"] = mblog.get("longText").get("longTextContent");
 59                     else:
 60                         dict_info["text"] = pq(mblog.get("text")).text(); #获取微博的内容,利用pq将html标签去掉
 61                     pics = mblog.get("pics"); #获取微博的图片
 62                     if pics:
 63                         urls = [];
 64                         for pic in pics:
 65                             url = pic.get("url");
 66                             urls.append(str(url));
 67                         dict_info["urls"] = urls;
 68                     yield dict_info;
 69 #获取20个页面
 70 def parse_page():
 71     list_info=[];
 72     text_info="";
 73     for page in range(1,21):
 74         json = get_page(page);
 75         results = parse_one_page(json);
 76         for result in results:
 77             list_info.append(result);
 78     for info in list_info:
 79         text_info=text_info+str(info["text"]);
 80     filename="996.txt";
 81     with open(filename,"w",encoding="utf-8") as f:
 82         f.write(text_info)
 83     return filename,list_info;
 84 
 85 #点赞数排行
 86 def sort_atitudes(list_info):
 87     sort_list=sorted(list_info,key=operator.itemgetter('attitudes_count'),reverse=True);
 88     #sort_list = sorted(list_info, key=operator.itemgetter('attitudes_count'));
 89     for i in range(20):
 90         print(sort_list[i]);
 91     pd.DataFrame(data=sort_list).to_csv('{0}点赞排行.csv'.format(unquote(keyword, encoding='utf-8')), encoding='utf_8_sig');  # 保存为.csv格式
 92 
 93 
 94 #创建停用词list
 95 def stopwordslist(filepath):
 96     stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]#一行一行读取
 97     return stopwords;
 98 
 99 #切割文本
100 def cut_text(filename):
101     stopwords = stopwordslist("stops_chinese.txt");
102     with open(filename,"r",encoding="utf-8") as f:
103         text=f.read();
104     for r in stopwords:
105         text = text.replace(r, "");
106     word= jieba.lcut(text);
107     return text,word;
108 
109 #统计词频
110 def count_word(text, word):
111     d={};
112     for i in word:
113         if len(i)==1:
114             word.remove(i);
115         else:
116             d[i] = text.count(i);
117     d=sorted(d.items(),reverse=True,key=lambda d:d[1]);
118     pd.DataFrame(data=d).to_csv('{0}词频.csv'.format(unquote(keyword, encoding='utf-8')), encoding='utf_8_sig');  # 保存为.csv格式
119     return d;
120 
121 
122 #主函数
123 def main():
124     filename,list_info=parse_page();
125     text,word=cut_text(filename);
126     count_word(text, word);
127     sort_atitudes(list_info);
128 
129 main();
View Code

 

 

 

 

posted @ 2019-04-23 10:28  不疯魔不成魔  阅读(742)  评论(0编辑  收藏  举报