原本規畫這個部分可以寫個十天左右。不過,因為我之前就有寫過爬蟲文章,所以為了不讓自己太偷懶(笑),所以可能會縮短一點。另外,再加上,早上亂逛別人文章的時候,發現了一位Howard大也在寫爬蟲的相關文章,而且看了一下他的文章,我覺得他的文章寫得也不錯,還好沒有過來AI這組跟我競爭(噓!你們甚麼都沒看到!)。
不過,這也不代表我的文章沒有了價值。人家寫爬蟲寫30天不是沒有它的道理,一定會挖得比較深去寫,也會寫盡各種可能的情況,我則比較希望,直接單刀直入,避免架構性的去說明整個爬蟲前後運作的原理,會直接把遇到的問題跟解決的方案列出來,另外,他實作的語言似乎是node.js,我則是用python實作,我還是有點價值的,嘿嘿~
比較項目 | Howard大 | GaotWang |
---|---|---|
篇幅 | 30天 | 6天 |
語言 | Node.js | Python |
語言特性 | 非同步 | 同步 |
特性效果 | 爬蟲較快 | 非同步比較麻煩 |
對不起,我再多嘴一下。再爬蟲方面,node.js跟python有個最大的差別,就是node.js本身預設的發送request的方法就是非同步的,也就是它會在cpu允許的情況底下,盡可能的在等待對方server回應時,發出下一個request。而python中的request則不是如此預設,也就是發出一個request後,它會等待server回應後再發出下一個request。如果你看不懂request是什麼,不用擔心,後面就會慢慢介紹了。
總而言之,就爬蟲的領域來說,nodejs預設的速度會快一點,而python也可以達到同樣的效果,要多寫幾行程式碼就是了(另外也有爬蟲框架特別在解決這個問題)。但是出了爬蟲領域,nodejs也整天在處理怎麼變成同步啦,ㄎㄎ。
這篇文章主要是寫給剛開始學習Python爬蟲的初學者,由於自己剛開始學習這部分知識時,所有的套件名詞猶如雪片般飛來,有時會錯誤的理解一個套件的使用方式,有時則對某個套件期待過高,學成時總覺得不過爾爾,有種失落感。因此著述。
為了避免概念混淆,先打個預防針,我接下來要介紹的爬蟲,並非大規模的、地毯式的爬取任何可以取得的網頁,而是有針對性的爬蟲。也就是說,我在進行網頁爬取時,一般都會在同一個domain之內(網址中”http:/ /“後,第一個”/“符號之前的字串),同時會先鎖定我要爬取的幾個頁面,並進一步鎖定每一個頁面中我要取得的資訊,然後最後會用相對精準的方式整理資料存入資料庫。
Python爬蟲,主要是透過以下幾個套件達成: