天天看點

爬蟲綜合大作業

作業要求來自于: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

爬蟲綜合大作業
爬蟲綜合大作業
爬蟲綜合大作業