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。

 

posted @ 2018-09-20 21:32  crazy_thb  阅读(3612)  评论(0编辑  收藏  举报