惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
C
CXSECURITY Database RSS Feed - CXSecurity.com
V
Visual Studio Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
小众软件
小众软件
L
LangChain Blog
Cyberwarzone
Cyberwarzone
美团技术团队
The Register - Security
The Register - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tor Project blog
V
V2EX
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News: Ask HN
Hacker News: Ask HN
L
LINUX DO - 最新话题
Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
aimingoo的专栏
aimingoo的专栏
人人都是产品经理
人人都是产品经理
F
Full Disclosure
V2EX - 技术
V2EX - 技术
The Cloudflare Blog
博客园 - 叶小钗
T
Threat Research - Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Latest news
Latest news
S
Security @ Cisco Blogs
Spread Privacy
Spread Privacy
Project Zero
Project Zero
K
Kaspersky official blog
MyScale Blog
MyScale Blog
Attack and Defense Labs
Attack and Defense Labs
云风的 BLOG
云风的 BLOG
博客园 - 【当耐特】
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
P
Privacy International News Feed
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
C
Cybersecurity and Infrastructure Security Agency CISA
Webroot Blog
Webroot Blog
罗磊的独立博客
Vercel News
Vercel News
N
News and Events Feed by Topic
A
Arctic Wolf
C
CERT Recently Published Vulnerability Notes

博客园 - dataxiu.com

[原创.数据可视化系列之十三]idw反距离权重插值算法的javascript代码实现 [原创.数据可视化系列之八]使用等d3进行灰度图转伪彩色 [原创.数据可视化系列之七]阿里竞赛作品技术展示 [原创.数据可视化系列之六]使用openlyaers进行公网地图剪切 [原创.数据可视化系列之五]韩国"萨德"系统防御图 [原创.数据可视化系列之四]跨平台,多格式的等值线和等值面的生成 [原创.数据可视化系列之三]使用Ol3加载大量点数据 [原创.数据可视化系列之二]使用cesium三维地图展示美国全球军事基地分布 [原创.数据可视化系列之一]使用openlayers 3 显示聚合数据 管理类软件的界面模板。 使用SilverLight开发ARPG游戏(一) 买联想学生机器的遭遇:问联想1(连载) 联想09年春节学生机开卖了。 谈UrlRewriter在XP和2003上IIS设置的差异 使用SilverLight构建插件式应用程序(九) —聊天插件客户端的实现 .NET 访问JAVA的WebService使用SOAP头 使用SilverLight构建插件式应用程序(八) —聊天插件Duplex WCF的实现 使用SilverLight构建插件式应用程序(七) 使用SilverLight构建插件式应用程序(六)
[原创.数据可视化系列之十二]使用 nodejs通过async await建立同步数据抓取
dataxiu.com · 2017-02-09 · via 博客园 - dataxiu.com

      做数据分析和可视化工作,最重要的一点就是数据抓取工作,之前使用Java和python都做过简单的数据抓取,感觉用的很不顺手。

      后来用nodejs发现非常不错,通过js就可以进行数据抓取工作,类似jquery的方法进行数据分析和抽取,最关键的是,不用编译就可以放上去跑,能够快速应对网站变化。但是他的全部异步模式也是带来很多问题:

  1. 太多而回调会带来深入的嵌套,程序可读性不好。
  2. 循环当中嵌套异步的模式,如果需要抓取多个地址数据,并把数据进行拼合成一个文件的时候,你可能就会抓狂了,比较不好处理,因为都是异步的,你不知道这几个链接那个先完成,那个后完成,啥时候关闭文件等等,这是我最讨厌的一个地方。
  3. Node 7中发布的async await特性就是为了解决过深的回调嵌套等的问题,下边的代码就是循环,抓数据,处理数据,然后再把数据post出去的例子,并且中间加了休眠:
 1     async function main() {
 2         var urls = [];
 3         for (var i = 0; i <= 34; i++) {
 4             console.info("当前页数:"+i);
 5             //从原始网址获取数据
 6             var myurl = "https://www.cnblogs.org/"+i+".json?b3831331f475fdcb13df";
 7             //同步,这才是最重要的
 8             var body = await request.get(myurl);
 9             var datas = JSON.parse(body);
10             //循环获取到的结果
11             for (var j = 0; j < datas.length; j++) {
12                 var content = datas[j];
13                 var options = {
14                     method: 'POST',
15                     uri: 'http://localhost:8080/save.do',
16                     form: {
17                         id: 1,
18                     },
19                     headers: {
20                         /* 'content-type': 'application/x-www-form-urlencoded' */ // Set automatically
21                     }
22                 };
23                 try {
24                     //同步,把数据发送到另一个网址上,保存
25                     let result = await request.post(options);
26                 } catch (e) {
27 
28                 }
29                 //休眠5秒,避免太频繁被干掉,或者随机一个时间
30                 await sleep(5000);
31             }
32         }
33     }
34     main();

运行的时候,是用 node --harmony-async-await app.js的方式启动就可以了。注意node使用v7之上的版本,最新为7.5.0。