前天的文章發出之后有簡友留言說,是看我的專題文章學習爬蟲的,并告訴我,簡書更新新版網站后,我是第一個講解的,他當時能搜到的全是舊版本的文章。今天來詳細說說簡書的數據抓取。
學習Python爬蟲離不開大量練習實戰,爬~爬~爬,本著“所有網站皆可爬”的原則,只要你感興趣的網站數據都可以拿來練習,一般在初學時大家練得比較多的是,豆瓣、知乎和新浪微博,堪稱“爬手三大練手地”,但是近半年多來,爬取簡書學習和練習的童鞋越來越多。
那大家對簡書上哪些數據會比較感興趣,其結構和關鍵點又是如何?在學習的爬蟲中又需要注意哪些?
一、網站整體結構
我是從一個爬蟲的角度來說的。基本可以歸為以下幾種類型頁面:
-
第一類:首頁,新上榜,7日熱門,30日熱門,專題頁面
都屬于(多個作者的)文章列表頁,獲得文章基本數據,可以獲取數據進行分析:簡書首頁文章的閱讀量分析,如果抓取了不同時間的可以做對比分析,如大家現在普通感覺文章上了首頁閱讀量比之前要少,究竟減少了多少,主要原因是什么?
上首頁的熱門文章的類型,標題有什么特點?
是哪些作者經常上首頁,霸占了首頁熱點,有什么特點?還可以不同時間的對比分析,如半年前與現在對比。
這類分析比較難的是文章類型,簡書對文章沒有類型的標注,如TAG類型,只有專題的不同,但是專題之間有些還是有比較多的交叉重合。建議文章在發表時,作者可以設置文章類型標記。目前想對大量文章進行分類只能使用機器學習、NLP。
要獲取專題收錄情況,首頁文章會顯示一個主要的專題收錄,在文章頁面可以獲取這篇文章的所有專題收錄。
-
第二類:作者主頁
這個頁面的數據比較多,可分為:
1) 作者基本數據(用戶基礎數據):文章數、字數、粉絲數、喜歡數
簡書作者大排名一類的分析文章,每隔一段時間都會有,也比較受歡迎,主要就是要獲取這些數據。2)文章數據:包括作者的每篇文章數據:閱讀量、評論數、獲贊和打賞
曾有一個作者,因為出書的需要,要解自己所有文章的總閱讀量和評論量,就幫助爬過一遍他的文章數據。
我之前寫過用一鍵生成簡書目錄,簡書連載作者福音: 一鍵生成連載目錄和連載作品排行統計(Python爬蟲應用)-
3)動態數據(timeline):可以獲取,作者的注冊時間,作者打賞他人、評論他人文章的情況,這些反應了用戶的活躍情況。
我之前寫過一篇文章,“簡書首席評論員”的誕生與消失,就是找那些沒有發表文章,卻寫了很多評論的用戶。比較遺憾的是個人主頁上沒有更多的作者個人信息,這個相對于豆瓣、新乎、微博來說,個人信息是比較少的,如性別、年齡、學校、地域地址等。
-
4)消息中的數據:收到的喜歡和贊,關注
爬取這些數據需要登錄,我使用的是Cookie的登錄方式,避免了簡書登錄需要滑動解鎖。這些數據可以分析,作者的粉絲、獲贊的增長情況。
消息中的簡信,這個我寫過一個簡信助手,Python實現的站內消息群發助手-V1.0,不過是針對舊版網站的。
消息中還可以爬取專題投稿收錄情況,這個適用于專題運營者。
- 第三類:文章頁
這個一般爬的不多,需要的情況是:- 統計一篇文章的字數
- 文章被專題的收錄情況
- 爆文的評論情況
- 第四類:其他頁
其他類型頁面貌似就剩一個,推薦作者頁
以下幾篇文章,都是關于簡書新版網站爬取的一些分析。
Scrapy抓取Ajax數據
Python爬取數據的分頁分析
分析一個爬蟲的分頁問題
二、簡書爬蟲的效率
很多學習、練習Python爬蟲的童鞋,都想過盡可能多的抓取用戶,盡可能多的字段。
我的思路,是用最少的入口,獲取最多的用戶,采取的是爬取關鍵用戶的粉絲方式。先不考慮注冊時間,爬取用戶timeline一些用戶的作者太多。可以考慮的多個爬蟲一起工作,分別爬取數據入庫。目前沒有更好的方式。
三、一個爬蟲的自我修養
有爬蟲就有反爬蟲,相互斗爭和較量。目前在簡書上還沒有被禁過,雖然我們使用各種防止被Ban的方法,偽裝瀏覽器、使用代理IP,使用隨機Cookie,selenium等,作為一個爬蟲愛好者和學習者,有幾點還是要特別注意:一 限制爬蟲下載速度,二 避開用戶使用期爬取,我一般都選擇深夜時開始。
三、爬蟲開發工程師的段位
上周在我們的微信群,數據蟲巢 黃老師,給出一個爬蟲工程師的段位,稍后他會有文章和其他形式更詳細地分享。貼出來,與大家共勉。