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。
Python树莓派 爬虫心得的更多相关文章
- python网络爬虫实战PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:vg1y python网络爬虫实战帮助读者学习Python并开发出符合自己要求的网络爬虫.网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚 ...
- Python简单爬虫入门三
我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...
- Ubuntu下配置python完成爬虫任务(笔记一)
Ubuntu下配置python完成爬虫任务(笔记一) 目标: 作为一个.NET汪,是时候去学习一下Linux下的操作了.为此选择了python来边学习Linux,边学python,熟能生巧嘛. 前期目 ...
- Python简单爬虫入门二
接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...
- [Python] 网络爬虫和正则表达式学习总结
以前在学校做科研都是直接利用网上共享的一些数据,就像我们经常说的dataset.beachmark等等.但是,对于实际的工业需求来说,爬取网络的数据是必须的并且是首要的.最近在国内一家互联网公司实习, ...
- python简易爬虫来实现自动图片下载
菜鸟新人刚刚入住博客园,先发个之前写的简易爬虫的实现吧,水平有限请轻喷. 估计利用python实现爬虫的程序网上已经有太多了,不过新人用来练手学习python确实是个不错的选择.本人借鉴网上的部分实现 ...
- GJM : Python简单爬虫入门(二) [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- python urllib2使用心得
python urllib2使用心得 1.http GET请求 过程:获取返回结果,关闭连接,打印结果 f = urllib2.urlopen(req, timeout=10) the_page = ...
- Python分布式爬虫原理
转载 permike 原文 Python分布式爬虫原理 首先,我们先来看看,如果是人正常的行为,是如何获取网页内容的. (1)打开浏览器,输入URL,打开源网页 (2)选取我们想要的内容,包括标题,作 ...
随机推荐
- 自己动手实现Lua--实现TAILCALL指令
最近在看<自己动手实现Lua-虚拟机.编译器和标准库>.这是本挺不错的书,通过学习此书能够对Lua语言有比较深刻的理解,此外还可以对如何自己实现一门脚本语言有直观的认识.对于想学习Lua的 ...
- APP渗透测试之安卓APP抓包
之前说过一些信息搜集相关的东西(漏了APP没讲),按照渗透测试的完整流程,我作为测试,测个APP,也很合理吧 既然能用burpsuite测试web,那就能用burpsuite测试APP(有大佬自称用b ...
- WPS:利用数据透视表将数据按指定列进行分组求和
1.场景 如图所示:根据日期计算日期当天的总金额 2.利用数据透视表完成该操作 (1)选择金额列的某一格数据,点击上方插入--数据透视表 !!请确保表格第一行为表头 (2)在弹出的页面中直接点击&qu ...
- 【现学现卖】th:href标签动态路径设置,thymeleaf获取session中的属性值
update:2020-02-28:按道理来说这个功能在前后端分离的时候应该不怎么用的上,基本到现在我还是没遇到过有这样的需求,不过也是一种方法就是.th:href="@{/{role}/l ...
- noip 模拟 7
我花了我多久的rp啊-- 考试经过 这次是三道题,依旧先看一遍,然后从头开始做 T1一看,这好像是KMP?等等,我好像忘了啊你个废,没事哈希也能做,On似乎可以呀,一波操作,我是不是要A题了? 转到T ...
- Java常用类之字符串类
String 的特性 public final class String implements java.io.Serializable, Comparable<String>, Char ...
- linux下设备驱动的结构&编译&加载
构造和运行模块 insmod modprobe rmmod 用来装载模块到正运行的内核和移除模块的用户空间工具. #include<linux/init.h> module_init(in ...
- 多台服务器共享session问题(2)
多台服务器共享session问题 转载自:https://www.cnblogs.com/lingshao/p/5580287.html 在现在的大型网站中,如何实现多台服务器中的session数据 ...
- hdfs数据迁移
有时候可能会进行hadoop集群数据拷贝的情况,可用以下命令进行拷贝 需要在目标集群上来进行操作 hadoop distcp hdfs://192.168.1.233:8020/user/hive/w ...
- The Second Week lucklyzpp
The Second Week 文件通配符模式 在Linux系统中预定义的字符类 1.显示/etc目录下,以非字母开头,后面跟了一个字母以及其它任意长度任意字符的文件或目录 2.复制/etc目录下 ...