zoukankan      html  css  js  c++  java
  • 爬虫综合大作业

    作业要求来自于: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

     

     

  • 相关阅读:
    随想 20180517
    随想 20180516
    随想 20180514
    alpinelinux
    装系统时总是提示 保存分区表时出现错误(0000000001)函数不正确
    kindeditor在Firefoxt 和 Chrome 下不能取到值的解决方法
    浏览器兼容
    php生成随机密码的几种方法
    按钮效果
    linux下修改/dev/shm tmpfs文件系统大小
  • 原文地址:https://www.cnblogs.com/bufengdianbuchengmo/p/10754096.html
Copyright © 2011-2022 走看看