专栏首页IT大咖说所见即所得-基于Node.js的页面数据实践

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

摘要

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

嘉宾演讲视频回顾及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——转换代码。

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

本文分享自微信公众号 - IT大咖说(itdakashuo),作者:邓佳龙

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-03-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 面对海量数据存储,如何保证HBase集群的高效以及稳定

    内容来源:2018 年 09 月 15 日,平安科技数据平台部大数据高级工程师邓杰在“中国HBase技术社区第五届MeetUp ——HBase应用与发展”进行《...

    IT大咖说
  • 自主研发、不断总结经验,美团搜索推荐机器学习平台

    内容来源:2018 年 5 月 26 日,美团点评技术专家杨一帆在“饿了么技术沙龙·第25弹【搜索推荐】”进行《Why WAI: 美团点评搜索推荐机器学习平台》...

    IT大咖说
  • “第五届中国国际大数据大会”将聚焦大数据创新应用

    一份简单的外卖,如何在骑手人员调配、天气变化、出菜速度等因素实时变动的情况下,可以及时送到消费者手里?

    IT大咖说
  • Python 抓取网页乱码原因分析

    在用 python2 抓取网页的时候,经常会遇到抓下来的内容显示出来是乱码。 发生这种情况的最大可能性就是编码问题:运行环境的字符编码和网页的字符编码不一致。 ...

    Crossin先生
  • VSCode代码格式化自动换行问题

    Mac VSCode 升级中替换了内置格式化插件导致代码格式化自动换行问题: 1、设置 2、搜索 vetur 3、右边三个点按钮,-> open sett...

    程序员不务正业
  • (2019)[前端]面试题[5]:CSS单位那些事【px,em,rem】

    无道
  • 万亿级调用下的优雅:微信序列号生成器架构设计及演变(下)

    上一篇文章介绍了seqsvr的原型,这篇会简单地介绍下seqsvr容灾架构的演变。我们知道,后台系统绝大部分情况下并没有一种唯一的、完美的解决方案,同样的需求在...

    曾钦松qinz
  • 推荐2个工具

    情情说
  • 更快的网络+成本更低的消息=>微服务=>函数=>边缘计算

    在德国柏林举办的microXchg 2017大会上,亚马逊公司技术专家Adrian Cockroft发表了一个前瞻性的演讲。Adrian Cockroft是Cl...

    静一
  • 小程序与小游戏使用wx.getUserInfo 接口直接弹出授权框的开发方式将逐步不再支持

    各位小程序开发者注意了:从2018年4月30日开始,小程序与小游戏的体验版、开发版调用 wx.getUserInfo 接口,将无法弹出授权询问框,默认调用失败。...

    ytkah

扫码关注云+社区

领取腾讯云代金券