<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 爬蟲之某殼公寓投訴分析

          共 7354字,需瀏覽 15分鐘

           ·

          2021-08-23 23:27

          由于疫情,加速了長租公寓的暴雷,某殼公寓頻繁傳出各種負面新聞,于是把黑貓上關(guān)于某殼公寓的投訴內(nèi)容爬取了下來并進行了分析,就有了這篇完整的數(shù)據(jù)分析實戰(zhàn)項目,從數(shù)據(jù)獲取到數(shù)據(jù)的分析。

          一、數(shù)據(jù)抓取

          import requests,timeimport pandas as pdimport numpy as nprequests.packages.urllib3.disable_warnings()  # 屏蔽https請求證書驗證警告from fake_useragent import UserAgent  # 生成隨機請求頭

          # uid請求數(shù)據(jù),數(shù)據(jù)格式較為規(guī)范,方便處理def request_data_uid(req_s,couid,page,total_page): params = { 'couid': couid, # 商家ID 'type': '1', 'page_size': page * 10, # 每頁10條 'page': page, # 第幾頁 # 'callback':'jQuery11', } print(f"正在爬取第{page}頁,共計{total_page}頁,剩余{total_page-page}頁") url = 'https://tousu.sina.com.cn/api/company/received_complaints'
          # 偽造隨機請求頭 header={'user-agent':UserAgent().random} res=req_s.get(url,headers=header,params=params, verify=False)# res = requests.get(url, params=params, verify=False) info_list = res.json()['result']['data']['complaints'] result =[] for info in info_list: _data = info['main']
          # 投訴日期 timestamp =float(_data['timestamp']) date = time.strftime("%Y-%m-%d",time.localtime(timestamp))
          # sn:投訴編號 title :投訴問題 appeal:投訴訴求 summary :問題說明 data = [date,_data['sn'],_data['title'],_data['appeal'],_data['summary']] result.append(data)
          pd_result = pd.DataFrame(result,columns=["投訴日期","投訴編號","投訴問題","投訴訴求","詳細說明"]) return pd_result

          # keywords請求數(shù)據(jù),數(shù)據(jù)格式相對混亂# 某梧桐這種沒有收錄商家ID的公司只能用keywords進行檢索處理# 某殼公寓有uid的這種也可以使用keywods進行數(shù)據(jù)請求
          def request_data_keywords(req_s,keyword,page,total_page):# page =1 params = { 'keywords':keyword, # 檢索關(guān)鍵詞 'type': '1', 'page_size': page * 10, # 每頁10條 'page': page, # 第幾頁 # 'callback':'jQuery11', } print(f"正在爬取第{page}頁,共計{total_page}頁,剩余{total_page-page}頁") # url = 'https://tousu.sina.com.cn/api/company/received_complaints' url ='https://tousu.sina.com.cn/api/index/s?'
          # 偽造隨機請求頭 header={'user-agent':UserAgent().random} res=req_s.get(url,headers=header,params=params, verify=False)# res = requests.get(url, params=params, verify=False) info_list = res.json()['result']['data']['lists'] result =[] for info in info_list: _data = info['main']
          # 投訴日期 timestamp =float(_data['timestamp']) date = time.strftime("%Y-%m-%d",time.localtime(timestamp))
          # sn:投訴編號 title :投訴問題 appeal:投訴訴求 summary :問題說明 data = [date,_data['sn'],_data['title'],_data['appeal'],_data['summary']] result.append(data)
          pd_result = pd.DataFrame(result,columns=["投訴日期","投訴編號","投訴問題","投訴訴求","詳細說明"]) return pd_result

          #生成并保持請求會話req_s = requests.Session()
          # 某殼公寓result = pd.DataFrame()total_page = 2507for page in range(1,total_page+1): data = request_data_uid(req_s,'5350527288',page,total_page) result = result.append(data)result['投訴對象']="某殼公寓"result.to_csv("某殼公寓投訴數(shù)據(jù).csv",index=False)
          # 某梧桐 關(guān)鍵詞檢索# 某殼公寓為品牌名,工商注冊名稱為某梧桐資產(chǎn)管理有限公司result = pd.DataFrame()total_page = 56for page in range(1,total_page+1):    data = request_data_keywords(req_s,'某梧桐',page,total_page) result = result.append(data)result['投訴對象']="某梧桐"result.to_csv("某梧桐投訴數(shù)據(jù).csv",index=False)



          二、清洗繪圖

          import os,reimport pandas as pdimport numpy as np

          # 數(shù)據(jù)清洗,處理keywords爬取導(dǎo)致的投訴標題混亂data_path = os.path.join('data','某梧桐投訴數(shù)據(jù).csv')data =pd.read_csv(data_path)pattern=r'[^\u4e00-\u9fa5\d]'data['投訴問題']=data['投訴問題'].apply(lambda x: re.sub(pattern,'',x))data.to_csv(data_path,index=False,encoding="utf_8_sig")

          # 數(shù)據(jù)合并result = pd.DataFrame()for wj in os.listdir('data'): data_path = os.path.join('data',wj) data =pd.read_csv(data_path) result = result.append(data)result.to_csv("data/合并后某殼投訴數(shù)據(jù).csv",index=False,encoding="utf_8_sig")
          # 讀取數(shù)據(jù)data = pd.read_csv("data/合并后某殼投訴數(shù)據(jù).csv")
          # 篩選到截止昨天的數(shù)據(jù),保證按天數(shù)據(jù)的完整性data = data[data.投訴日期<='2020-11-09']print(f"截至2020-11-09之前,黑貓投訴累計收到某殼公寓相關(guān)投訴共計 {len(data)} 條")
          # 時間分布處理_data=data.groupby('投訴日期').count().reset_index()[['投訴日期','投訴編號']]_data.rename(columns={"投訴編號":"投訴數(shù)量"},inplace = True)

          # 2020-01-30之前投訴數(shù)量求和num1 = _data[_data.投訴日期<='2020-01-30'].投訴數(shù)量.sum()data0 =pd.DataFrame([['2020-01-30之前',num1]],columns=['投訴日期','投訴數(shù)量'])# 2020-02-01 ~ 2020-02-21號之間投訴情況分布data1=_data[(_data.投訴日期>='2020-02-01')&(_data.投訴日期<='2020-02-21')]
          # 2020-02-21 ~ 2020-11-05num2 = _data[(_data.投訴日期>='2020-02-21')&(_data.投訴日期<='2020-11-05')].投訴數(shù)量.sum()
          # 2020-11-06 ~ 2020-11-09 本數(shù)據(jù)只采集到2020-11-09print(f"2020-11-06當天投訴量{_data[_data.投訴日期=='2020-11-06'].iloc[0,1]}條")
          data2=_data[(_data.投訴日期>'2020-11-06')&(_data.投訴日期<='2020-11-09')]

          data3=pd.DataFrame([['2020-02-21 ~ 2020-11-05',num2]],columns=['投訴日期','投訴數(shù)量'])new_data = pd.concat([data0,data1,data3,data2])
          '''配置繪圖參數(shù)'''import matplotlib.pyplot as plt%matplotlib inlineplt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['font.size']=18plt.rcParams['figure.figsize']=(12,8)plt.style.use("ggplot")new_data.set_index('投訴日期').plot(kind='bar') # 剔除了2020-11-06的數(shù)據(jù),24093條

          2020-01-30之前屬于正常投訴量,偶爾一兩單,2月份因為疫情原因,導(dǎo)致投訴量大量增長,可能是因為疫情原因無法保潔,疫情租房補貼之類的,還有被長租公寓暴雷以及某殼破產(chǎn)之類的負面新聞給帶起來的租戶緊張等等。

          2020-02-21之后一直到2020-11-05號投訴量很正常,相比較2020-01-30之前略多,仍在正常經(jīng)營可接受范圍內(nèi)。

          2020-11-06突然驟增了2萬4千多條投訴,異常值影響展示,單獨剔除出去了,特地去查了一下新聞,看看有沒有什么大事兒發(fā)生,結(jié)果還真有,據(jù)36氪報道 2020-11-06某殼公寓關(guān)聯(lián)公司稱被執(zhí)行人,執(zhí)行標的超519萬元。


          自此之后的7、8、9某殼在黑貓的投訴每天維持在2-300的日增,看來某殼破產(chǎn)的官方辟謠都是扯淡了,也許并不是謠言,也許網(wǎng)傳某殼再現(xiàn)ofo排隊討債并非空穴來風。


          以上還是僅僅從黑貓上獲取到的投訴數(shù)據(jù),投訴無門以及自認倒霉的的用戶量又會有多大呢?


          接下來就看一下,投訴用戶主要投訴的是什么?主要訴求是什么?


          三、詞云生成

          import jieba# 分詞模塊import reimport collectionsimport PIL.Image as img# pip install PILfrom wordcloud import WordCloudimport PIL.Image as img# pip install PILfrom wordcloud import WordCloud
          # 投訴詳細說明合并后進行分詞all_word=''for line in data.values: word = line[4] all_word = all_word+word
          # jieba分詞result=list(jieba.cut(all_word))
          # 投訴問題詞云圖wordcloud=WordCloud( width=800,height=600,background_color='white', font_path='C:\\Windows\\Fonts\\msyh.ttc',# 如果存在中文字符需要加載解析的詞典 max_font_size=500,min_font_size=20).generate(' '.join(result))image=wordcloud.to_image()# image.show()# 生成圖片展示wordcloud.to_file('某殼公寓投訴詳情.png')# 在本地生成文件展示

          # 投訴標題合并后進行分詞all_word=''for line in data.values: word = line[2] all_word = all_word+word
          # jieba分詞result=list(jieba.cut(all_word))
          # 生成詞云圖# 投訴問題詞云圖wordcloud=WordCloud( width=800,height=600,background_color='white', font_path='C:\\Windows\\Fonts\\msyh.ttc',# 如果存在中文字符需要加載解析的詞典 max_font_size=500,min_font_size=20).generate(' '.join(result))image=wordcloud.to_image()# image.show()# 生成圖片展示wordcloud.to_file('某殼公寓投訴問題.png')# 在本地生成文件展示
          # 投訴訴求合并后進行分詞all_word=''for line in data.values: word = line[3] all_word = all_word+word
          # jieba分詞result=list(jieba.cut(all_word))
          # 生成詞云圖# 投訴問題詞云圖wordcloud=WordCloud( width=800,height=600,background_color='white', font_path='C:\\Windows\\Fonts\\msyh.ttc',# 如果存在中文字符需要加載解析的詞典 max_font_size=500,min_font_size=20).generate(' '.join(result))image=wordcloud.to_image()# image.show()# 生成圖片展示wordcloud.to_file('某殼公寓投訴訴求.png')# 在本地生成文件展示


          某殼公寓投訴詳情 詞云圖

          投訴詳情可以看出來,主要投訴問題:提現(xiàn),活動返現(xiàn)(每個月返多少錢,我的除了剛開始兩個月正常返現(xiàn),后面也沒按時打款,客服打不通后面就沒怎么關(guān)注了),主要還有客服聯(lián)系不上,保潔問題等!也許好好直面問題,投訴可能也沒那么多。


          某殼公寓投訴訴求 詞云圖

          投訴用戶的主要訴求大家強烈要求對某殼公寓做出相應(yīng)處罰并要求退款和賠償。


          原文鏈接:https://blog.csdn.net/qq_35866846/article/details/109601322

          文章轉(zhuǎn)載:Python之禪
          (版權(quán)歸原作者所有,侵刪)

          點擊下方“閱讀原文”查看更多

          瀏覽 103
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  人妻斩蜜桃视频网站 | 日本级婬乱片A片AAA毛片A | 日韩三级片电影网 | 黄片在线免费网站 | 天天色天天干天天色 |