Python樹莓派 爬蟲心得

2022-03-27 13:32:16 字數 1710 閱讀 2591

平台: 樹莓派 linux

語言:python

搞乙個爬蟲都清楚是怎麼回事,我這裡玩過之後有下面的心得:

為什麼要用樹莓派呢,省電啊,沒亂七八糟的桌面問題,可以一直開著。

1.樹莓派上的磁碟寫入對於不同格式是有區別的,我試過跑ntfs,開10執行緒就完全卡死不動了,wa(wait for io)很高。看了下原因是ntfs**效率不高而且是在使用者層的fuse基礎上的,所以放棄換了ext4,後來又測試了一下準備上fat32(windows linux相容)。順帶試了一下vfat,也是fuse的,就是知道不行了。測試資料如下:

*dd寫入1gb

sudo

mount /dev/sdb1 ~/tanhangbo

sudo

dd bs=1m count=1k if=/dev/zero of=test.bin oflag=dsync

*dd讀取1gb

sudo

dd bs=1m count=1k if=test.bin of=/dev/null oflag=dsync

--->ntfs (需要fuse)

w: 275.428 s, 3.9 mb/s

r: 54.1916 s, 19.8 mb/s

--->exfat (需要fuse)

w: 123.785 s, 8.7 mb/s

r: 45.3635 s, 23.7 mb/s

--->fat32

sudo

mount -t vfat /dev/sdb1 ~/tanhangbo -o rw,umask=0000

問題不大,開10~20個執行緒下 2~3mb/s

w:62.3962 s, 17.2 mb/s

r:36.0879 s, 29.8 mb/s

--->ext4

w:111.132 s, 9.7 mb/s

r:37.3983 s, 28.7 mb/s

--->ext3 格式化很慢

w:89.2118 s, 12.0 mb/s

r:35.6953 s, 30.1 mb/s

--->ext2 格式化很慢

w:162.789 s, 6.6 mb/s

r:35.5818 s, 30.2 mb/s

小檔案我就沒去測了,大概看了一下fat32可以hold住,python爬起來跑了一下也沒有大壓力,關鍵是win&linux相容,就非他不可了。不過fat32小問題就是沒有日誌,小心用就好了。要注意的是win下面自帶分割槽軟體不行,要下乙個diskgenius來分割槽。

2.多執行緒爬比較好,雖然python多執行緒是假的,但是這是io密集型沒關係。我測試樹莓派2b爬20個執行緒差不多了,再多就cpu滿了。我先第一遍把url全部爬下來塞到乙個sqlite資料庫裡面,再寫個多執行緒**,用多執行緒佇列負載均衡爬。負載均衡策略比較簡單,哪個佇列東西少就放到哪個佇列裡面。每乙個佇列的大小和執行緒數量都可以自己設定,這樣比較方便。

3.錯誤處理一定要做好。遇到磁碟錯誤或者404或者其他問題如果不處理好,放在那裡爬就完蛋了。半天時間就浪費掉了。try catch一定要做好。日誌也要放好看看到底**出錯了。指令碼也要做好補爬單策略因為網路超時這些問題。用資料庫+補爬策略+本地儲存應該沒問題,跑個兩三遍基本上可以爬完。

資料量一大就可以進行資料處理或者建乙個**處理了,這是後面的事情了,暫時考慮到用flask+bootstrap,這樣比較輕量級,要做的好一點前端就用nodejs的webpack來處理了,後端用django。

樹莓派 之 爬蟲(Scrapy)

跑爬蟲比較接近電影裡對hacker印象,輸入幾行 程式就可以執行很久 剛好樹莓派已經預裝了python2,可以在樹莓派上體驗一下,另外爬蟲確實很實用,可以高效蒐集很多資訊,比複製貼上強了很多 而且scrapy門檻很低,幾個小時就能上手,得到你想要的資料 安裝 安裝配置virtualenv 建立名為s...

Python樹莓派程式設計1 2 探索樹莓派

1.2 探索樹莓派 那樹莓派上究竟有什麼呢?有什麼能適合這個如此之小的裝置呢?目前為止,一共有兩款樹莓派 a版和b版 b版詳情見圖1 2 兩個版本之間的差距非常小,b版僅比a版多了一點功能,當然 也要稍微貴一些。a版記憶體為256mb,而b版記憶體為512mb a版有乙個usb介面,而b版有兩個。a...

python樹莓派設定 樹莓派初始設定

wifi設定 每當重新安裝樹莓派的系統或者初始化一塊全新的樹莓派都會遇到這樣的問題 連線wifi。那當我們沒有顯示器和鍵盤的情況下怎末可以將樹莓連線到當前的wifi網路呢?方法非常簡單,首先在sd卡的根目錄下新增乙個名為 wpa supplicant.conf的檔案,然後在該檔案內新增以下的內容 c...