Python爬蟲學(xué)習(xí):簡書簽約作者知多少?

這個(gè)周末用Python爬蟲把簡書上的簽約作者信息、文章爬取了一遍,想對(duì)簡書簽約作者有一個(gè)整體了解,并進(jìn)行數(shù)據(jù)分析,他們寫作的頻度是怎樣的,寫作的類型有哪些?他們最值得學(xué)習(xí)的地方有哪些?

下一個(gè)會(huì)是你嗎?

一、爬取哪些信息?

爬取的信息包括爬出所有簽約作者主頁(latest_articles),簽約作者發(fā)表的文章篇數(shù)、字?jǐn)?shù)、粉絲數(shù),收獲的喜歡;他們?cè)诤啎习l(fā)表第一篇文章的時(shí)間,在簡書上寫作的時(shí)間天數(shù)。

“首頁熱門”,“七日熱門”,“三十日熱門”文章中簽約作者文章的占比數(shù)。

二 、爬蟲從哪里開始?

簡書上沒有專門頁面推薦展示“簡書簽約作者”,必須設(shè)置一個(gè)入口去爬取這些信息。我能找到一個(gè)專題是《簡書簽約作者新春大拜年》,這是2016年春節(jié)收錄了10位簡書簽約作者的新春大拜年文章,顯然現(xiàn)在不止這10位。

一開始設(shè)想的方案,是從“三十日熱門”中的一篇文章開始,抓取這篇文章的“打賞支持”、“喜歡”和“評(píng)論”的用戶,再順著作者粉絲(或關(guān)注)往下爬取。但看過幾篇文章,這種方法馬上被否掉,因?yàn)榇蛸p、喜歡和評(píng)論以及粉絲99%的都是一般特征用戶(即讀者,很少發(fā)表文章),相當(dāng)于從簡書大量用戶中撈出“簽約作者”,效率太低,如果要做簡書一般用戶的分析,這種方案可以考慮。

我把目標(biāo)轉(zhuǎn)向了“首頁熱門”,“七日熱門”,“三十日熱門”這個(gè)幾欄目。既然簡書沒有專門的推薦簡書簽約作者,那他們必須靠文章來進(jìn)行展現(xiàn)。如果把這幾個(gè)欄目中文章的簽約作者都抓取下來,應(yīng)該能找到95%以上的簡書簽約作者。

這幾個(gè)欄目首屏都是顯示20條數(shù)據(jù),頁面上沒有分頁,只有一個(gè)“點(diǎn)擊查看更多”,在代碼找到分頁顯示的url,并有page參數(shù)。但在url地址欄試了一下,發(fā)現(xiàn)只修改page并不能獲得正確的頁面,而且也不知道總頁數(shù)。

換一個(gè)思路,通過遞歸方法抓取頁面的“點(diǎn)擊查看更多”的url,直到頁面上沒有“點(diǎn)擊查看更多為止”,這樣首頁熱點(diǎn)是99條數(shù)據(jù)。拿到每篇文章作者的url。

遞歸調(diào)用獲取“更多”url

獲取到這個(gè)欄目文章作者的主頁鏈接,再到用戶主頁爬取信息,判斷是不是簡書簽約作者,如果是,抓取用戶相關(guān)信息,發(fā)表的文章相關(guān)信息。

在作者頁面通過看源代碼,找到文章分頁url,定位于最后一頁最后一篇文章,抓取到作得發(fā)表第一篇文章的時(shí)間,第一篇文章的閱讀數(shù)的評(píng)論數(shù),計(jì)算出在簡書上寫作的天數(shù)。

這個(gè)分頁url是有效的!

三、如何爬取到完整的數(shù)據(jù)?

這次我把爬取的數(shù)據(jù)寫成CSV文件,方便查看、做數(shù)據(jù)分析。把“首頁熱門”(top/daily),“七日熱門”(top/weekly),“三十日熱門”(top/monthly)數(shù)據(jù)放在一起,去重后,找到的簡書簽約作者記錄是32條。

5/15《首頁熱門》上簡書簽約作者的數(shù)據(jù)

這種方式爬取的數(shù)據(jù)量不大,找到的信息比手動(dòng)搜索專題收錄的數(shù)據(jù)多了一倍多。我隨手翻閱了一下“成為簡書簽約作者”的文章,一篇文章中寫道,她是第46位簡書簽約作者。我意識(shí)到爬取的數(shù)據(jù)量還不全。這時(shí),第一欄數(shù)據(jù),關(guān)注數(shù),引起我的注意,原來以為是分析中最沒有用的一個(gè)數(shù)據(jù),我看了一下兩位作者,發(fā)現(xiàn),簡書簽約作者之間互關(guān)的比較多,從這“關(guān)注”數(shù)據(jù)中應(yīng)該可以再抓取到一些數(shù)據(jù)。

就馬上增加一個(gè)方法,把簽約作者的關(guān)注的用戶再爬取一次找出簽約作者,再經(jīng)過數(shù)據(jù)去重,最終得到63位簡書簽約作者的信息。

如果猜測一下的話,“熱門”中抓取到的數(shù)據(jù)應(yīng)該是“簡書簽約作者”中的活躍用戶或新晉作者,互關(guān)數(shù)據(jù)中抓取的數(shù)據(jù)應(yīng)該是加入時(shí)間靠前的,寫作方向比較偏一點(diǎn)的。更多數(shù)據(jù)分析,另文詳述,更有一些好玩有趣數(shù)據(jù),以及怎樣才能成為簡書簽約作者。

PyCharm 代碼

總結(jié)

  1. 設(shè)計(jì)一個(gè)爬蟲的入口很重要,關(guān)乎到數(shù)據(jù)抓取的效率。
  2. 對(duì)數(shù)據(jù)的查看過程中發(fā)現(xiàn)有效數(shù)據(jù)的隱藏點(diǎn),再進(jìn)行抓取。
  3. 這次仍然使用request,xpath,代碼更熟練了一些。沒有使用scrapy,主要是才剛剛開始,對(duì)于多數(shù)據(jù)的爬取處理不太熟悉。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容