Golang爬蟲實踐-將你的掘金小冊裝進kindle

hantmac發表於2019-02-20

背景:

Golang爬蟲實踐-將你的掘金小冊裝進kindle
不知不覺在掘金買了好幾本小冊了,基本沒怎麼看,在電腦或者手機上看,看一會就覺得累,還要開啟掘金的網站,找到自己的小冊,零碎的時間根本用不上。平時自己用kindle比較多,就像把掘金小冊裝進kindle多好,就算批量下載到電腦上,也比開啟掘金網站找小冊強,於是就產生了這個專案。

專案思路:

專案的思路比較簡單,分為下面幾個步驟。

  1. 分析掘金小冊站點,我們每次點選一個章節,都會發現URL的後面一串會發生變化,於是懷疑這一串字元就是每章節的ID,於是首先要獲取的就是整個小冊的所有章節ID;
  2. 經過上面思路的尋找,就找到了XHR請求中get?uid這個請求,看了一下response,果然有一串是sectionID;
  3. 拿到所有章節ID後,就要找獲取章節內容的API,這時你可以在開發者工具的filter中,搜尋section(直覺),可以找到getSection?uid的API,開啟一看,果然就是根據sectionID獲取內容;
  4. 所有API找到後,就可以構造引數,爬取你想要的內容了。

Github README

直接把GitHub上的README拿過來了,寫的比較詳細,適合小白入手。


將你的掘金小冊裝進kindle

  1. 下載掘金小冊儲存為MarkDown的格式
  2. 下載掘金小冊儲存為mobi格式

注意:轉成mobi用的是這個專案,只支援一級目錄和二級目錄,導致目前mobi格式比較亂,裡面的圖片沒有處理,如果你有好用的轉mobi的工具或者程式碼,一定提issue告訴我,或者直接contribute.

使用方法

  • 從掘金小冊的站點獲取client_id,uid,token等資訊,填入./config/config.json中
  • go run main.go
  • 對於沒有Go環境的小夥伴,在tool資料夾中已經編譯好了Linux&Mac版本的可執行檔案,./juejinxiaoceToolForLinux或者./juejinxiaoceToolForMac即可
  • 等待你的小冊出爐?

小白操作步驟

  1. 登入掘金網站,開啟你的一本小冊,如下圖:

Golang爬蟲實踐-將你的掘金小冊裝進kindle

  1. windows按F12,Mac使用快捷鍵conmand+shift+i,進入開發者工具,如下圖:

Golang爬蟲實踐-將你的掘金小冊裝進kindle

  1. 選擇XHR(意思是過濾Ajax的非同步請求),重新整理一下網頁,找到get?uid=xxx,上圖中紅色圈出部分。點選get?uid=xxx部分,可以看到該API的請求與返回等資訊,其實就是我們需要的uid,id,token等,如下圖所示:

Golang爬蟲實踐-將你的掘金小冊裝進kindle

  1. 可以點選response檢視該API的返回資訊,對於golang來說也是構造結構體的關鍵,具體可檢視程式碼;
  2. 通過這個API我們可以獲取sectionId的一個陣列,每一個sectionId就對應文章中的一節,在第filter中搜尋getSection,該API就是獲取指定sectionId的內容;

Golang爬蟲實踐-將你的掘金小冊裝進kindle

上面所用的URL我都放到了config/config.json裡面,可以直接使用。

以上是基本操作,搞定之後,就執行go run main.go等待你的小冊出爐?。

Golang爬蟲實踐-將你的掘金小冊裝進kindle

可以看到MarkDown格式和mobi格式的書籍都已經下載。


  • 專案地址:github.com/hantmac/jue…
  • 其實這個mobi格式轉的並不是特別好,如果大家有什麼好的方法,求分享!
  • 如果Golang沒有好用的包的話,後面會出Python版本,Python還是有不少好用的工具。

最後要說的是,本部落格僅做技術分享,作者創作小冊都不容易,大家下載後不要傳播。

相關文章