<rp id="wnpn7"><ruby id="wnpn7"></ruby></rp>
<progress id="wnpn7"><track id="wnpn7"><rt id="wnpn7"></rt></track></progress>
<ruby id="wnpn7"></ruby>
<ruby id="wnpn7"><blockquote id="wnpn7"><div id="wnpn7"></div></blockquote></ruby>

    1. <em id="wnpn7"><ruby id="wnpn7"><input id="wnpn7"></input></ruby></em>
      1. <button id="wnpn7"><acronym id="wnpn7"></acronym></button><button id="wnpn7"><acronym id="wnpn7"></acronym></button>

        <rp id="wnpn7"><acronym id="wnpn7"></acronym></rp>

        <li id="wnpn7"><object id="wnpn7"><u id="wnpn7"></u></object></li>
        VB.net 2010 視頻教程 VB.net 2010 視頻教程 python基礎視頻教程
        SQL Server 2008 視頻教程 c#入門經典教程 Visual Basic從門到精通視頻教程
        當前位置:
        首頁 > 編程開發 > python教程 >
        • python基礎教程之用Python做一個知乎沙雕問題總結

        本站最新發布   Python從入門到精通|Python基礎教程
        試聽地址  
        http://www.squ68.com/eschool/python.html


        前言

        本文的文字及圖片來源于網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理。

        作者: 數據森麟

        PS:如有需要Python學習資料的小伙伴可以加點擊下方鏈接自行獲取http://t.cn/A6Zvjdun

        這兩天偶然上網的時候,被知乎上一個名為“玉皇大帝住在平流層還是對流層”的問題吸引,本以為只是小打小鬧,殊不知這個問題卻在知乎上引發了強烈共鳴,瀏覽次數500W+,7000+關注:

         

         

        數據來源

        知乎非常“貼心”地專門有一個問題可以滿足我們的需求,出人意料的是這個問題居然有243個回答,并且陶飛同學獲得了3W+的贊同

         

        我們從中爬取了所有回答中出現的問題鏈接,共用400多個問題,其中陶飛就提供了200+,在此向陶飛同學表示感謝,幫助我們構建了“沙雕數據庫”,這部分代碼如下:

        import re
        import selenium
        from selenium import webdriver
        import requests
        from bs4 import BeautifulSoup
        import pandas as pd
        import time
        ?
        driver = webdriver.Chrome()
        driver.maximize_window()
        ?
        url = 'https://www.zhihu.com/question/37453271'
        js='window.open("'+url+'")'
        driver.execute_script(js)
        driver.close()
        driver.switch_to_window(driver.window_handles[0])
        for i in range(100):
             js="var q=document.documentElement.scrollTop=10000000"  
             driver.execute_script(js)
        ?
        all_html = [k.get_property('innerHTML') for k in driver.find_elements_by_class_name('AnswerItem')]
        all_text = ''.join(all_html)
        ?
        #all_text = all_text.replace('\u002F','/')
        all_text = all_text.replace('questions','question')
        pat = 'question/\d+'
        questions = list(set([k for k in re.findall(pat,all_text)]))

        獲得到了問題的對應的編號后,就可以去各自的頁面獲取各個問題對應的的標題、瀏覽數等信息,如下圖所示:

         

        這部分代碼如下:

        header = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win32; x32; rv:54.0) Gecko/20100101 Firefox/54.0',
        'Connection': 'keep-alive'}
        cookies ='v=3; iuuid=1A6E888B4A4B29B16FBA1299108DBE9CDCB327A9713C232B36E4DB4FF222CF03; webp=true; ci=1%2C%E5%8C%97%E4%BA%AC; __guid=26581345.3954606544145667000.1530879049181.8303; _lxsdk_cuid=1646f808301c8-0a4e19f5421593-5d4e211f-100200-1646f808302c8; _lxsdk=1A6E888B4A4B29B16FBA1299108DBE9CDCB327A9713C232B36E4DB4FF222CF03; monitor_count=1; _lxsdk_s=16472ee89ec-de2-f91-ed0%7C%7C5; __mta=189118996.1530879050545.1530936763555.1530937843742.18'
        cookie = {}
        for line in cookies.split(';'):
            name, value = cookies.strip().split('=', 1)
            cookie[name] = value
        ?
        questions_df = pd.DataFrame(columns = ['title','visit','follower','answer','is_open'])
        ?
        for i in range(len(questions)):
            try:
                url = 'https://www.zhihu.com/'+questions[i]
                html = requests.get(url,cookies=cookie, headers=header).content
                bsObj = BeautifulSoup(html.decode('utf-8'),"html.parser")
                text = str(bsObj)
                title = bsObj.find('h1',attrs={'class':'QuestionHeader-title'}).text
                visit = int(re.findall('"visitCount":\d+',text)[0].replace('"visitCount":',''))
                follower = int(re.findall('"followerCount":\d+',text)[0].replace('"followerCount":',''))
                answer = int(re.findall('"answerCount":\d+',text)[0].replace('"answerCount":',''))
                is_open = int(len(re.findall('問題已關閉',text))==0)
                questions_df = questions_df.append({'title':title,'visit':visit,
                                                    'follower':follower,'answer':answer,
                                                    'is_open':is_open},ignore_index=True)
                time.sleep(2)
                print(i)
            except:
                print('錯誤'+str(i))

        數據分析

        在分享出最終的“沙雕排行榜”前,我們首先嚴肅認真(lixinggongshi)的進行一波分析,主要看一下問題中的關鍵詞,首先是所有詞云的詞云:

         

        看來這些問題大多是源自于大家對于人生的探索,否則“為什么”,“如果”,“怎么辦”也不會出現那么多,出人意料的是“體驗”這個知乎專屬tag居然并不多,可能是出于對知乎的尊重,和“體驗”相關的問題都不會問得那么“沙雕”。

        下面把這些助詞去掉,再來看下結果:

         

        這個圖看來,讀者關注的問題還是很極端,一方面在關注男女朋友“你冷酷、你無情、你無理取鬧”這種問題,另一方面卻在關注宇宙、地球這種關乎全人類的問題,很符合知乎“人均985,各個過百萬”的人設。

        這兩個圖實際上都是基于一個表情,不知道有沒有看出來:

         

        好吧,其實看不出來才是正常,能看出來的可能現在去知乎提個問題,下期就會上榜,最后把部分問題做出詞云:

         

        不知道大家能不能看清,說實話我自己是看不清的,也沒準備讓大家看清,目的就是引出下面真正的排行榜

        沙雕問題排行榜

        通過綜合問題觀看數,關注數,回答數,關注占比,回答占比,綜合得到分數的流量指數和新奇指數,最終獲得一個整體的分數,如下圖所示:

         

        聽起來是不是很復雜,實際上最終還是通過90%10%的數據+10%90%的主觀來進行了排名,為大家精選了15個最為“沙雕”的問題,

        相關教程
                
        免费看成年人视频大全_免费看成年人视频在线观看