对于网络上的公开数据,理论上只要由服务端发送到前端都可以由爬虫获取到。但是Data-age时代的到来,数据是新的黄金,毫不夸张的说,数据是未来的一切。基于统计学数学模型的各种人工智能的出现,离不开数据驱动。数据采集、清洗是最末端的技术成本,网络爬虫也是基础采集脚本。但是有几个值得关注的是:
- 对于实时变化的网络环境,爬虫的持续有效性如何保证
- 数据采集、清洗规则的适用范围
- 数据采集的时间与质量--效率
- 爬与反爬的恩怨
- 爬虫的法律界限
法律的边界,技术无罪
对于上面几个关注点,我最先关注的便是爬虫的 法律界限 ,我曾经咨询过一个律师:
Q: 老师,我如果用爬虫爬取今日头条这种类型网站的千万级公开数据,算不算违法呢?
A: 爬取的公开数据不得进行非法使用或者商业利用
简单的概括便是爬虫爬取的数据如果进行商业出售或者有获利的使用,便构成了“非法使用”。而一般的爬虫程序并不违法,其实这是从法律专业的一方来解读,如果加上技术层面的维度,那么应该从这几方面考虑:
- 爬取的数据量
- 爬取数据的类型(数据具有巨大的商业价值,未经对方许可,任何人不得非法获取其数据并用于 经营行为 )
- 爬取的数据用途 (同行竞争?出售?经营?分析?实验?...)
- 是否遵循网站的robots.txt 即 机器人协议
- 爬取行为是否会对对方网站造成不能承受的损失(大量的爬取请求会把一个小型网站拖垮)
其实爬虫构成犯罪的案例是开始增多的,相关新闻:
如果你的上级或公司要求你爬取某些网站的大量公开数据,你会怎么办呢?可以参考第2条新闻。法律矛盾点关键在于前面考虑的前三点,如果是个人隐私数据,是不能爬取的,如果是非公开数据,是不能爬取的,而对于其他大量的公开数据爬取,看人家查不查的到你,要不要起诉你。技术在你的手上,非法与否在于你怎么去用。最好的爬取道德原则是:
- 减少并发请求
- 延长请求间隔
- 不进行公开出售数据
- 遵循网站 robots协议
当然,反爬最有效的便(目的均在于拦截爬虫进入网站数据范围)是:
- 要求用户密码+验证码
- 加密数据
- js混淆
- css混淆
- 针对IP请求频率封锁
- 针对cookie、session单个账户请求频率封锁单日请求次数
- 对关键数据进行拆分合并
- 对爬虫投毒(返回假数据)
- 完善robots.txt
- 识别点击九宫图中没有包含xxx的图片等(终极验证码)
- 设置黑白名单、IP用户组等
工欲善其事
针对网站的公开数据进行爬取,我们一般都要先对网站数据进行 分析,定位 ,以确定其采集规则,如果网站设置了访问权限,那么便不属于我们的爬虫采集范围了:)
分析好采集规则,写好了采集数据持久化(存入数据库、导出为word、excel、csv、下载等)的相关代码,整个爬虫运行正常。那么怎样才能提高采集速度呢?
- 多进程采集
- 多线