京東鏈接:https://item.jd.com/12575102.html
經(jīng)過近一年的辛苦創(chuàng)作咱圆、編輯盯孙、等待卦羡,本書終于出版了。這種感覺有點像是十月懷胎麦到,但沒有生育時候的痛苦绿饵,只有最后得到的欣喜。現(xiàn)在回憶起去年接到寫書的邀請瓶颠,然后到糾結(jié)拟赊,再到剛開始痛苦的寫作,以及最后成稿后的釋然粹淋,一切都覺得是一場人生的經(jīng)歷吸祟。我倒是認(rèn)為寫書的目的不是為了賺錢,寫一本書給自己桃移,總結(jié)自己的過往屋匕,將經(jīng)驗傳播給他人,就可以了借杰。
故事——還得從2017年說起
2017年1月左右过吻,摩拜單車終于進(jìn)入到成都。不像重慶那樣的上山下坡蔗衡,成都平原地勢較平纤虽,成都原本就有非常多騎自行車的人,街頭巷尾都有自行車的蹤影绞惦。作為短途的必要交通工具逼纸,摩拜單車的進(jìn)入算是給出行帶來了非常大的方便。
有一天在查看摩拜單車的APP的時候济蝉,突發(fā)奇想是否可以將這些車的位置數(shù)據(jù)拿到杰刽,然后嘗試分析一下運(yùn)營狀況菠发,看看成都到底有多少車。打開電腦专缠,輕車熟路的進(jìn)行API分析雷酪,搞明白了API的接口,然后就寫了一個簡單的爬蟲涝婉,獲取了一個月左右的數(shù)據(jù)并進(jìn)行了分析哥力。然后在簡書上發(fā)了幾篇文章,并將源代碼放在了https://github.com/derekhe/mobike-crawler這個repo中墩弯。
出乎意料的是吩跋,這些分析居然得到了非常大的流量,兩三天時間就到了1萬多的閱讀量渔工,甚至這個數(shù)據(jù)分析還“成功”的引起了對方的注意:被問到你怎么得到數(shù)據(jù)锌钮?
2018年
2018年,順著這個思路引矩,后來我又繼續(xù)分析并爬取了共享汽車梁丘、自由職業(yè)者網(wǎng)站,并繼續(xù)堅持將2016年6月開始做的機(jī)票的數(shù)據(jù)爬蟲做得更快更穩(wěn)定旺韭。
2017年末氛谜,愛飛狗旅行小程序上線,將我收集到的機(jī)票的數(shù)據(jù)公開区端,并集成了一個預(yù)測系統(tǒng)值漫。知曉小程序?qū)Υ颂匾鈱懥艘黄恼逻M(jìn)行報道。隨后织盼,在2018年下半年ThougtWorks對外的YottaBytes分享中杨何,我將愛飛狗的整個產(chǎn)品的規(guī)劃、開發(fā)以及背后的技術(shù)實踐都分享出來沥邻,并寫成文章危虱。
寫書?
2018年3月底谋国,電子工業(yè)出版社的安娜編輯聯(lián)系我槽地,看我能不能約一本書稿。當(dāng)時我還沒放在心上芦瘾,想想寫個書算是一個大工程吧捌蚊,費(fèi)時費(fèi)力的,當(dāng)時就想想要不還是算了近弟?后來和編輯的更多溝通中發(fā)現(xiàn)缅糟,爬蟲方面的書最近還比較熱,也能熱一段時間祷愉,我做的這些工作也恰好和爬蟲非常有關(guān)窗宦。
我隨后看了一些目前的爬蟲相關(guān)的書籍赦颇, 發(fā)現(xiàn)很多爬蟲的書籍都寫得很初級,講講Python的語法赴涵、講講幾個庫的用法媒怯,弄兩個例子就完了,甚至有些書居然用了76頁講各種東西的安裝K璐堋扇苞!初級的爬蟲往往很簡單,爬幾個網(wǎng)站即可寄纵,但更復(fù)雜的如何去拿到app的數(shù)據(jù)鳖敷,如何破解一些sign的思路,卻全然沒有程拭《猓或許是太復(fù)雜了吧。即便有些數(shù)據(jù)拿到手了恃鞋,怎么分析崖媚,怎么可視化,也很少有講解恤浪。
如果我要寫的話至扰,我一定不會寫這樣的書,我不會寫初級的書资锰。我要寫的話,一定是從一個想法開始阶祭,到如何實現(xiàn)這個想法绷杜,到如何解決各種困難。案例的話濒募,一定是end to end的鞭盟,將數(shù)據(jù)達(dá)到實用的階段。
還好之前做過的各種數(shù)據(jù)分析案例瑰剃,都是有一定的業(yè)務(wù)背景的齿诉,有一些數(shù)據(jù)提供給了一些愛好者進(jìn)行了更深入的分析,有一些數(shù)據(jù)甚至幫助一些公司進(jìn)行一些新業(yè)務(wù)的拓展嘗試晌姚。我和編輯溝通了這些想法粤剧,那就開始動手吧!(其實內(nèi)心是有點糾結(jié)的挥唠,因為想到要寫很長的時間抵恋,非常的難受)
那就開始吧
這是最原始的選題單,可以看到其實當(dāng)時想寫的例子其實比現(xiàn)在書中呈現(xiàn)的更多宝磨。但后來由于目標(biāo)網(wǎng)站改動太大弧关,以及有些網(wǎng)站的例子不太合適盅安,所以進(jìn)行了刪減。
最后世囊,只有半年的時間啊……
萬事開頭難别瞭,先寫個提綱吧:
開始
工欲善其事必先利其器,2009年寫過研究生的論文株憾,倒是對Word玩的很溜。但如今都2018年了喲号胚,好歹用點Markdown對吧!
好吧猫胁,就用Markdown。但是用Markdown的話弃秆,我需要把每個章節(jié)分開么届惋?后來嘗試了一下發(fā)現(xiàn),單一Markdown文件就非常利于管理脑豹,不用有潔癖一樣把東西拆來拆去:
- 方便預(yù)覽整書情況
- 方便章節(jié)之間相互引用
- 避免調(diào)整章節(jié)時候的麻煩事
然后,在Visual Studio中安裝了Markdown Preview Enhanced插件瘩欺,這個工具很好:
- 自動預(yù)覽
- 自動生成目錄
- 自動內(nèi)嵌圖片、內(nèi)嵌代碼
- 能夠?qū)С龀啥喾N格式(Word格式拌牲、PDF格式等)
最后俱饿,整個項目當(dāng)然會用git進(jìn)行管理,這是最基本的啦塌忽。
其中我覺得需要拿出來講的是,Markdown中可以直接引用代碼枣购。這意味著我一邊寫書一邊寫的代碼,可以無縫的集成到文章中棉圈,這樣我更改了代碼以后眷蜓,書中的代碼也更新了,避免了不同步的問題账磺。
一年
現(xiàn)在回顧一下整個出書的歷程痊远。
我這個人是喜歡一鼓作氣做完一件事情氏捞。為了保證及時交付,每天都分配了至少兩個小時的時間液茎,再加上之前已經(jīng)有一些素材的積累,所以整個書的書寫都相對比較快滞造。基本上在4個月時間內(nèi)集中寫完了書籍谒养。初稿完成后明郭,我的事情就比較少了,主要是一些校對的工作薯定。
- 4月底:建立Repo
- 5月初:書寫第一章
- 6月初:完成單車部分書寫
- 6月底:完成共享汽車部分書寫
- 7月底:完成Freelancer部分書寫
- 8月初:增加愛飛狗產(chǎn)品
- 9月底:完成所有書寫,并轉(zhuǎn)換成docx供編輯修改
- 10月初——12月底 一排
- 12月底到1月初: 二排亏推,拿到書號
- 2月底:終審
- 3月中:封面、查重年堆、定價
- 3月底:樣書到
經(jīng)驗
- 持續(xù)和編輯聯(lián)系径簿,寫完一章就給編輯大致看看得到反饋
這一點避免了很多走彎路嘀韧。第一次寫書缠捌,對寫書需要做的事情了解的比較少,加之平時在敏捷項目中都強(qiáng)調(diào)快速反饋曼月,在寫書過程中也是,能夠及時避免一些坑炎辨。 - 一鼓作氣聪姿,堅持每天花些時間寫乙嘀,避免拖拉
- 長期寫博客破喻,積累素材
坑
在寫書的過程中也有一些不可避免的“坑”。一來是寫書不像是寫博客那么隨意曹质,對于語言以及內(nèi)容的提供都要有一個監(jiān)管在里面。運(yùn)氣不好的是初稿交了以后几莽,編輯告訴我2018年國家對地圖相關(guān)的圖片管理很嚴(yán)宅静。我了解到相關(guān)的書籍都必須要進(jìn)行審核,雖然說是免費(fèi)坏为,但是為了避免審核的時間消耗和一些潛在的風(fēng)險,我們對書中的一些地圖相關(guān)的圖片洒忧、內(nèi)容進(jìn)行了一些修改和刪減够颠。
爬蟲這種技術(shù)有一定的法律風(fēng)險熙侍,再三考慮之下對書中也有提到一些特定APP名字的地方履磨,我們將名字進(jìn)行了打碼,并強(qiáng)調(diào)了這些思路以及代碼都僅供參考巷送。
初稿的反饋說書寫的很直白矛辕,全是干貨,審核后說是要語言柔和一些聊品。由于這個書的架構(gòu)和其他類似書籍先將一大堆基礎(chǔ)知識不一樣,出版社的領(lǐng)導(dǎo)提議說將書的結(jié)構(gòu)進(jìn)行調(diào)整陈哑,變成介紹工具在前,案例在后惊窖。但這就是我想盡力避免的,不想讓讀者的錢花到了原本網(wǎng)上可以很快查到的地方纠屋,所以拒絕了盾计。
由于互聯(lián)網(wǎng)時代變化很快,網(wǎng)站和APP都在改版署辉,所以爬蟲相關(guān)的代碼,目前有些已經(jīng)無法使用了哥攘。這是預(yù)料之中的事情材鹦,但書中所傳遞的方法,是通用的桶唐。
總結(jié)
不管如何,第一本書也算是出來了尤泽,放在書架上也是對我的極大地鼓舞。寫書不容易熊咽,一旦開始就要一鼓作氣闹丐。平時的積累非常重要,所以多多寫博客吧卿拴。