内容来源:2017年2月25日,懂球帝高级开发工程师邓佳龙在“HTML5梦工场 & 微软开发者沙龙第01期 -「再说 “JS 一统江湖”」”进行《所见即所得-基于Node.js的页面数据实践》演讲分享。IT 大咖说(微信ID:itdakashuo)做为独家视频合做方,经主办方和讲者审阅受权发布。前端
阅读字数:1424 | 4分钟阅读数据库
数据抓取是企业信息化的根基和第一步,只有利用先进的技术做好了信息抓取工做,才能为信息化带来最大的价值。懂球帝高级开发工程师邓佳龙用五个字就归纳了数据抓取的精髓。缓存
数据抓取,通俗叫法是“爬虫”。就是把非结构化的信息数据从网页中抓取出来,保存到结构化的数据库的过程。微信
能在页面上看到的数据就是能获得的数据,这就是我所说的“所见即所得”这五个字的含义。cookie
数据抓取技术能够经过不少后台语言实现,好比PHP、JAVA等等,可是Node.js有它独特的优点。前端工程师
知己知彼,百战不殆。数据抓取也有恶意攻击网站或盗取数据的状况。做为前端工程师,只有当你知作别人是如何抓取的时候,才能想办法去作防守。并发
一、获取数据。异步
二、从网页中提取并清洗出所需的数据。工具
三、落入存储当中。网站
Node.js的无阻塞和事件驱动这两个特性能够大大提高抓取效率。
由于Javascript是一门前端语言,因此用它来作数据的提取和清洗有很大优点。
Node.js最近几年的社区活跃度比较高,能够用的工具和包也不少。
有一些数据会隐藏在JS脚本中,只能用Javascript来抓取。
在球探足球的官网上有一些关于赛事比分的应用,若是这些数据要小编人工录入,至少要三个月。有了数据抓取技术,就变得很便捷高效。
首先抓取赛事数据,而后落地球队数据,再落地球员数据,根据赛事数据能够获取到赛程、比赛、赔率等数据。
足球里的赛程、赔率等信息都是很是重要的,而咱们利用数据抓取技术能够轻易得到。
有些网页若是用一些常规的数据请求方式不带useragent信息是没法正常访问的。因此在作数据抓取的时候最好带上useragent。
有些页面上的数据接口必须在头部中声明特定的referer才能获取数据。
部分网页和数据接口会有访问频次限制。我建议你们下降访问频次,不要过于规律。
一些网页和数据接口会出现转码问题。
有的网页和数据接口须要身份验证才能访问。那么就须要先作一个模拟登陆,把一些cookie信息缓存下来,获取数据的时候再带上这些cookie信息。
获取数据异常状态须要兼容性处理和必定的重试机制。针对不一样的网站机制也有所不一样。
目标网站改版时须要必定的预警机制。
Request——主要是用来获取数据。
Cheerio——用于转换和数据提取。
Co——把异步转化为同步的方式来写。
Async——作并发流程控制。
Mongoose——主要用于操纵MongoDB。
Sequelize——主要用于操纵MySQL。
Log4js——作日志记录。
Pm2——守护进程。
Icony-lito——转换代码。
今天就分享到这里,谢谢你们!