背景:
不知不覺在掘金買了好幾本小冊了,基本沒怎麼看,在電腦或者手機上看,看一會就覺得累,還要開啟掘金的網站,找到自己的小冊,零碎的時間根本用不上。平時自己用kindle比較多,就像把掘金小冊裝進kindle多好,就算批量下載到電腦上,也比開啟掘金網站找小冊強,於是就產生了這個專案。專案思路:
專案的思路比較簡單,分為下面幾個步驟。
- 分析掘金小冊站點,我們每次點選一個章節,都會發現URL的後面一串會發生變化,於是懷疑這一串字元就是每章節的ID,於是首先要獲取的就是整個小冊的所有章節ID;
- 經過上面思路的尋找,就找到了XHR請求中
get?uid
這個請求,看了一下response,果然有一串是sectionID
; - 拿到所有章節ID後,就要找獲取章節內容的API,這時你可以在開發者工具的filter中,搜尋section(直覺),可以找到
getSection?uid
的API,開啟一看,果然就是根據sectionID獲取內容; - 所有API找到後,就可以構造引數,爬取你想要的內容了。
Github README
直接把GitHub上的README拿過來了,寫的比較詳細,適合小白入手。
將你的掘金小冊裝進kindle
- 下載掘金小冊儲存為MarkDown的格式
- 下載掘金小冊儲存為mobi格式
注意:轉成mobi用的是這個專案,只支援一級目錄和二級目錄,導致目前mobi格式比較亂,裡面的圖片沒有處理,如果你有好用的轉mobi的工具或者程式碼,一定提issue告訴我,或者直接contribute.
使用方法
- 從掘金小冊的站點獲取client_id,uid,token等資訊,填入./config/config.json中
- go run main.go
- 對於沒有Go環境的小夥伴,在tool資料夾中已經編譯好了Linux&Mac版本的可執行檔案,./juejinxiaoceToolForLinux或者./juejinxiaoceToolForMac即可
- 等待你的小冊出爐?
小白操作步驟
- 登入掘金網站,開啟你的一本小冊,如下圖:
- windows按F12,Mac使用快捷鍵conmand+shift+i,進入開發者工具,如下圖:
- 選擇XHR(意思是過濾Ajax的非同步請求),重新整理一下網頁,找到get?uid=xxx,上圖中紅色圈出部分。點選get?uid=xxx部分,可以看到該API的請求與返回等資訊,其實就是我們需要的uid,id,token等,如下圖所示:
- 可以點選response檢視該API的返回資訊,對於golang來說也是構造結構體的關鍵,具體可檢視程式碼;
- 通過這個API我們可以獲取sectionId的一個陣列,每一個sectionId就對應文章中的一節,在第filter中搜尋
getSection
,該API就是獲取指定sectionId的內容;
上面所用的URL我都放到了config/config.json裡面,可以直接使用。
以上是基本操作,搞定之後,就執行go run main.go
等待你的小冊出爐?。
可以看到MarkDown格式和mobi格式的書籍都已經下載。
- 專案地址:github.com/hantmac/jue…
- 其實這個mobi格式轉的並不是特別好,如果大家有什麼好的方法,求分享!
- 如果Golang沒有好用的包的話,後面會出Python版本,Python還是有不少好用的工具。