平台: 树莓派 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树莓派 爬虫心得的更多相关文章

  1. python网络爬虫实战PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:vg1y python网络爬虫实战帮助读者学习Python并开发出符合自己要求的网络爬虫.网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚 ...

  2. Python简单爬虫入门三

    我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...

  3. Ubuntu下配置python完成爬虫任务(笔记一)

    Ubuntu下配置python完成爬虫任务(笔记一) 目标: 作为一个.NET汪,是时候去学习一下Linux下的操作了.为此选择了python来边学习Linux,边学python,熟能生巧嘛. 前期目 ...

  4. Python简单爬虫入门二

    接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...

  5. [Python] 网络爬虫和正则表达式学习总结

    以前在学校做科研都是直接利用网上共享的一些数据,就像我们经常说的dataset.beachmark等等.但是,对于实际的工业需求来说,爬取网络的数据是必须的并且是首要的.最近在国内一家互联网公司实习, ...

  6. python简易爬虫来实现自动图片下载

    菜鸟新人刚刚入住博客园,先发个之前写的简易爬虫的实现吧,水平有限请轻喷. 估计利用python实现爬虫的程序网上已经有太多了,不过新人用来练手学习python确实是个不错的选择.本人借鉴网上的部分实现 ...

  7. GJM : Python简单爬虫入门(二) [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  8. python urllib2使用心得

    python urllib2使用心得 1.http GET请求 过程:获取返回结果,关闭连接,打印结果 f = urllib2.urlopen(req, timeout=10) the_page = ...

  9. Python分布式爬虫原理

    转载 permike 原文 Python分布式爬虫原理 首先,我们先来看看,如果是人正常的行为,是如何获取网页内容的. (1)打开浏览器,输入URL,打开源网页 (2)选取我们想要的内容,包括标题,作 ...

随机推荐

  1. React脚手架配置代理

    react脚手架配置代理 方法一 在package.json中追加如下配置 "proxy":"http://localhost:5000" 说明: 优点:配置简 ...

  2. Java和Groovy脚本互相调用实例

    本实例是GODU动态脚本的一个技术简化版,演示了java调groovy,groovy又调java的运行过程. 测试用例: package com.boco.godu.integration; impo ...

  3. SpringBoot 整合缓存Cacheable实战详细使用

    前言 我知道在接口api项目中,频繁的调用接口获取数据,查询数据库是非常耗费资源的,于是就有了缓存技术,可以把一些不常更新,或者经常使用的数据,缓存起来,然后下次再请求时候,就直接从缓存中获取,不需要 ...

  4. uniapp scroll-view 组件横向滑动失效(ios问题出的最多)

    注意事项(做好以下几点就很难出问题): 一.scroll-view组件必须有固定高度,不可出现高度坍塌或让高度消失等现象;(重中之重) 二.一般问题出的多的就是在nvue环境下去使用的scroll-v ...

  5. 关于yii2学习笔记:gii的使用

    yii2中的gii无疑是非常强大的代码生成工具,以下是我学习使用gii的一些技巧,跟大家分享一下. 以User为例,在数据库中,创建user表. /*Navicat MySQL Data Transf ...

  6. 集合的打印、列表List、迭代器Iterators

    集合的打印 必须使用 Arrays.toString() 来生成数组的可打印形式. 但是打印集合无需任何帮助. /** * 集合的打印 * @author myf */ public class Pr ...

  7. CrackMe-CFF Crackme #3

    转载自:OllyDbg入门教程 我们先来运行一下这个 crackme(用 PEiD 检测显示是 Delphi 编的),界面如图: 这个 crackme 已经把用户名和注册码都输好了,省得我们动手^_^ ...

  8. Mac Ideal 常用快捷键

    智能提示 ⌘ -> command ⇧ -> shift ⌥ -> option -> 上箭头 -> 下箭头 ⌃ -> Control mac的option键  = ...

  9. mac下用clion进行sdl2游戏开发de环境搭建

    1. 故事背景 想从unity转unreal了,于是要使用c++进行开发.unreal引擎那么大,每次打开,我的小本都嗡嗡嗡的,想着不如用个轻量一些的引擎先开发吧,核心代码独立出来,到时候如果真要移植 ...

  10. Python实现GPU加速的基本操作

    技术背景 之前写过一篇讲述如何使用pycuda来在Python上写CUDA程序的博客.这个方案的特点在于完全遵循了CUDA程序的写法,只是支持了一些常用函数的接口,如果你需要自己写CUDA算子,那么就 ...