所见即所得-基于Node.js的页面数据实践

Posted IT大咖说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了所见即所得-基于Node.js的页面数据实践相关的知识,希望对你有一定的参考价值。

所见即所得-基于Node.js的页面数据实践


内容来源:2017年2月25日,懂球帝高级开发工程师邓佳龙在“html5梦工场 & 微软开发者沙龙第01期 -「再说 “JS 一统江湖”」”进行《所见即所得-基于Node.js的页面数据实践》演讲分享。IT 大咖说作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:1424 | 4分钟阅读


摘要

数据抓取是企业信息化的根基和第一步,只有利用先进的技术作好了信息抓取工作,才能为信息化带来最大的价值。懂球帝高级开发工程师邓佳龙用五个字就概括了数据抓取的精髓。


嘉宾演讲视频回顾及PPT链接:http://t.cn/RnLosMH


我眼中的数据抓取

数据抓取,通俗叫法是“爬虫”。就是把非结构化的信息数据从网页中抓取出来,保存到结构化的数据库的过程。


能在页面上看到的数据就是能得到的数据,这就是我所说的“所见即所得”这五个字的含义。


数据抓取技术可以通过很多后台语言实现,比如php、JAVA等等,但是Node.js有它独特的优势。


知己知彼,百战不殆。数据抓取也有恶意攻击网站或盗取数据的情况。作为前端工程师,只有当你知道别人是如何抓取的时候,才能想办法去做防守。


页面抓取的三个步骤


1、获取数据。


2、从网页中提取并清洗出所需的数据。


3、落入存储当中。


使用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——转换代码。


今天就分享到这里,谢谢大家!


相关推荐


推荐文章



近期活动




点击【阅读原文】进入干货密道

以上是关于所见即所得-基于Node.js的页面数据实践的主要内容,如果未能解决你的问题,请参考以下文章

什么基于浏览器的所见即所得编辑器尊重我的 HTML 格式? [关闭]

防止 Summernote html 所见即所得编辑器页面被内容 CSS 更改

jsp中的所见即所得编辑器[关闭]

将 jquery 添加到管理面板内的 Magento 页面 [所见即所得编辑器]

使用 Qt 的所见即所得 - 字体大小问题

GWT 的所见即所得编辑器组件