Python樹莓派 爬蟲心得


平台: 樹莓派 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。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM