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

推荐订阅源

C
Cisco Blogs
Schneier on Security
Schneier on Security
T
Tor Project blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tenable Blog
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Threat Research - Cisco Blogs
C
CERT Recently Published Vulnerability Notes
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
NISL@THU
NISL@THU
L
Lohrmann on Cybersecurity
Scott Helme
Scott Helme
Webroot Blog
Webroot Blog
Project Zero
Project Zero
Google Online Security Blog
Google Online Security Blog
The Last Watchdog
The Last Watchdog
Spread Privacy
Spread Privacy
Hacker News: Ask HN
Hacker News: Ask HN
PCI Perspectives
PCI Perspectives
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
W
WeLiveSecurity
Attack and Defense Labs
Attack and Defense Labs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
N
News | PayPal Newsroom
Help Net Security
Help Net Security
The Hacker News
The Hacker News
H
Heimdal Security Blog
O
OpenAI News
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
Cyberwarzone
Cyberwarzone
Simon Willison's Weblog
Simon Willison's Weblog
G
GRAHAM CLULEY
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 叶小钗
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
A
Arctic Wolf
I
Intezer
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
S
Security Affairs
P
Proofpoint News Feed
S
Secure Thoughts
腾讯CDC
Google DeepMind News
Google DeepMind News
量子位
罗磊的独立博客

博客园 - 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。