1. 程式人生 > >關於淘寶爬蟲實現的總結和反思

關於淘寶爬蟲實現的總結和反思

從2014年二月開始打算寫一個爬蟲,至今天初版已經差不多實現了。

由於拖延症和不願意直面困難的懦弱,花了半年的時間才把這麼簡單的一件事情給實現,

確實學習到了不少東西,值得一寫。

13年下半學期由於電子商務和分散式課程接觸到了網際網路的基礎知識,

於是在14年上半學期開始的時候決定去寫一個爬蟲,

由於同時想入門python,所以研究了一下就決定使用scrapy這個框架,

最開始配置環境

後來用了幾天看了scrapy的基本使用方法並且實現了靜態頁面解析

不瞭解xpath於是跑去學xpath

學完xpath之後就基本實現了對靜態網頁的解析了

後來打算爬評論的時候發現是ajax,

又決定去學ajax

這個時候就犯了一個非常嚴重的錯誤,

由於對看了ajax的使用方法之後沒什麼頭緒反正就是把爬蟲這個事情擱置了(直接反映了我這個人真的一點困難都沒法解決)

後來就去學django搭部落格雖然一直搭到現在都沒搭出來

因為搭部落格所以看了看前端然後又每天玩bootstrap玩的不亦樂乎但是還是寫不出什麼正經東西

想和許可一起出國於是報了GRE然後花了不少時間在所謂的準備GRE上最後考的跟shi一樣斷了出國的想法也浪費了很多時間

又去學演算法公開課雖然因為某一次沒有及時提交作業被扣了百分之五十的分就再也沒去學了

後來去看高數打算提高智商然後因為發現智商真是沒救了於是又擱置了

再後來?

再後來許可就生氣了╮(╯▽╰)╭

回憶了一下這段時間過得確實很浪費時間

說是在幹正經事可是都是東玩一下西玩一下一旦遇到了困難立刻撤退

反正不會的東西那麼多,這個入門了學那個完全沒有問題!

但是大三快結束了

再不弄點東西出來的話。。就真的廢了。。

所以要從第一個坑開始填

又開啟命名叫firstscrapy的工程繼續寫爬淘寶

這個時候大三的考試已經結束了

我也找到了一個實習

當然在面實習的時候由於不要臉寫了自己寫了一個淘寶爬蟲

所以被問過很多次關於淘寶爬蟲的事情

講到ajax那裡時都被問到我打算以後怎麼爬ajax

現在再想起來真的好想撞牆QAQ太尼瑪丟人了!!!

我說的是:看js

臥槽我是傻逼嗎!!!

臥槽那群面試的人居然就不動聲色也不提醒我一下!!!!

實際上後來我確實也就這麼做了╮(╯▽╰)╭

開始小學期的時候離實習只差一週了所以我就只有一週的時間實現爬蟲

我看了半周的js(捂臉

還拖著實驗室前端大神李大神跟我一起看QAQ

先用chromeF12找發的查詢串(到這裡我居然還沒有意識到什麼!!!)

然後寫了個指令碼找js裡面的callback

找到了,然後。。就沒有然後了。。

js全是加密過的怎麼看啊!!!!!!!!

不。。我真的看了=。=

我看了一天的js

得出的結論是:換條路走吧

然後就嘗試了模擬操作的splinter,和一些其他的模擬瀏覽器的框架

總是不太滿意(我覺得是因為splinter這個框架的文件太渣了的原因。。)

又重頭開始繼續看網頁。。

然後就出現轉機了

在跟實驗室一個很好玩的學弟講這個問題的時候正在逛北郵人論壇

然後學弟就提建議說可以去演算法版問一問

並且告訴我有人問過這種型別的問題的

看完之前那個帖子之後(帖子裡面主要建議幾乎全部都是模擬瀏覽器操作,看來我真的是選了一個不太好的路。。

就聯絡了唯一一個說看呼叫的介面是blabla的所以可以改掉傳過去的引數之類的人

跟他講了一下我的想法

然後他問我,為什麼要看js?不需要看js啊~

臥槽=。=|||

我好蠢QAQ

我瞬間就知道了。。。

媽蛋我都看到了request的header了!

就可以直接發過去了啊捂臉QAQ

哭了。。。

好了然後這個問題就結束了。。。

我就寫完了爬蟲

其實上這個爬蟲我真正有效果的工作就是

1,環境搭建

2,靜態頁面提取

3,ajax處理

感覺現在讓我寫一天就能解決了QAQ捂臉。。

我真的。。動作太慢了。。

感想大概是:

首先,獨學而無友,則孤陋而寡聞,如果後來不和別人探討這個問題可能我就看一輩子的js了

然後,我真的太蠢了,沒有能夠把學過的知識運用到實際程式設計中的能力……

再然後,生命太短暫我要快一點寫程式碼不然就寫不完了OTZ

最後,特別特別感謝許可,在整個過程中我們爭吵了好多次,但是不是因為你我也完成不了這個坑。

以後的坑的填滿就拜託你了。

雖然你也什麼實際的都沒做←←

差不多就是這樣,下階段解決淘寶封ip和加一些必要的差錯處理,把程式工程化發github,以及寫一個介面出來或者和django結合到一起去。