node 写的简单爬虫(三)
异步爬取数据
先引入
var async = require('async');
然后同样上代码
var topicUrls = [];//存所有地址
http.get(url,function(res){
var html='';
res.on('data',function(data){
html +=data
})
res.on('end', function() {
var $=cheerio.load(html);
$("#subShowContent1_news2 h2 a").each((iten,i)=>{
var href=$(i).attr('href');
topicUrls.push(href); })
console.log(topicUrls);
// 控制最大并发数为5,异步执行函数
async.mapLimit(topicUrls,5,function(myurl, callback){
//console.log(myurl);
fetchUrl(myurl, callback);
},function (err, result) {
console.log(result);
});
});
}).on('error', function() {
console.log("获取数据出错!")
});
function fetchUrl(myurl,callback) {
var fetchStart = new Date().getTime();
http.get(myurl,function(res){
var html='';
res.on('data',function(data){
html +=data
}) res.on('end', function() {
var $=cheerio.load(html); $("#article").each((iten,i)=>{
console.log($(i).text());
})
console.log("数据加载完毕");
});
}).on('error', function() {
console.log("获取数据出错!")
}); }
结果显示如下

node 写的简单爬虫(三)的更多相关文章
- node 写的简单爬虫(一)
安装cheerio npm install cheerio --save 引入http和cheeri var http=require("http"); var cheerio=r ...
- 用node.js写一个简单爬虫,并将数据导出为 excel 文件
引子 最近折腾node,最开始像无头苍蝇一样到处找资料,然而多数没什么卵用,都在瞎比比.在一阵瞎搞后,我来分享一下初步学习node的三个过程: 1 撸一遍NODE入门,对其有个基本的了解: 2 撸一遍 ...
- C#写一个简单爬虫
最近研究C#的爬虫写法,搞了半天,才在网上很多的写法中整理出了一个简单的demo(本人菜鸟,大神勿喷).一是为了自己记录一下以免日后用到,二是为了供需要朋友参考. 废话不多说,上代码 using Ht ...
- 用node写个简单的静态服务器
直接上代码吧,我把它命名为 app.js, 只要在该文件所在目录下,控制台运行 node app.js 即可启动一个本地服务器了. /** * 服务器 * Author jervy * Date */ ...
- 使用node写一个简单的页面操作
let http = require('http'); let urlStr = require('url'); let fs = require('fs'); let path = require( ...
- 第一次用python 写的简单爬虫 记录在自己的博客
#python.py from bs4 import BeautifulSoup import urllib.request from MySqlite import MySqlite global ...
- 用node.js从零开始去写一个简单的爬虫
如果你不会Python语言,正好又是一个node.js小白,看完这篇文章之后,一定会觉得受益匪浅,感受到自己又新get到了一门技能,如何用node.js从零开始去写一个简单的爬虫,十分钟时间就能搞定, ...
- 手把手教你学node.js之使用 superagent 与 cheerio 完成简单爬虫
使用 superagent 与 cheerio 完成简单爬虫 目标 建立一个 lesson 3 项目,在其中编写代码. 当在浏览器中访问 http://localhost:3000/ 时,输出 CNo ...
- node的简单爬虫
最近在学node,这里简单记录一下. 首先是在linux的环境下,关于node的安装教程: https://github.com/alsotang/node-lessons/tree/master ...
随机推荐
- WhaleCTF之web-http呀
WhaleCTF之web-http呀 前往题目 不多说,看看源码 源码没有,抓包,发一下,也没有 猜测不是这个页面 burp抓包,把html改成php 发一下,在返回源码看到flag~
- mysql数据库引擎(转载)
数据库引擎介绍 MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的.要添加一个新的引擎,就必须重新编译MYSQL.在缺省情况下,MYSQL支持三个引擎:ISAM.MYISAM和HEAP.另 ...
- jdk 数组位移运算
1.采用先shift=31-Integer.numberOfLeadingZeros(scale);取int前面的补零个数31再减去拿到占得内存位长度 2.i偏移shift(其实等于I*位数) 加上b ...
- jsonRPC
<?php /** * Simple JSON-RPC interface. */ namespace org; class JsonRpc{ protected $host, $port, $ ...
- 开发者说 | 分布式事务中间件 Seata 的设计原理
导读 微服务架构体系下,我们可以按照业务模块分层设计,单独部署,减轻了服务部署压力,也解耦了业务的耦合,避免了应用逐渐变成一个庞然怪物,从而可以轻松扩展,在某些服务出现故障时也不会影响其它服务的正常运 ...
- 如何在 Flink 1.9 中使用 Hive?
Apache Flink 从 1.9.0 版本开始增加了与 Hive 集成的功能,用户可以通过 Flink 来访问 Hive 的元数据,以及读写 Hive 中的表.本文将主要从项目的设计架构.最新进展 ...
- ECMAScript 6 (浅显入门)
1.let:ES6 新增了let命令,用来声明变量.它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效. var命令会发生”变量提升“现象,即变量可以在声明之前使用,值为unde ...
- 20190815-$N \Theta IP$
$NOIP$ 请选择您想测试的难度: 「困难」 「困难的地狱」 「能被神犇切掉的」 「你做不出来的」 「简单(完成前面所有后解锁)」 要难死了-- 考试过程: 首先看看三道题: 这是NOIP模拟测试? ...
- 零开始Android逆向教程(一)——初探Android逆向
这段时间因为某些业务驱动,开始研究一些逆向相关的东西,浏览了下其所包含的大致内容,发现真是一个新大陆,跟之前耳听目染过的一些门面介绍完全不是一个层级的,真正的印证了下手难这一说法. 谨此以本文开始 ...
- jeecms内容管理系统使用了哪些技术
jeeecms作为国内Java开源内容管理系统的龙头老大(感谢jeecms研发小组的辛苦劳作),技术架构也是比较成熟的,当然涉及到的技术也就相对多一些 看看jeecms内容管理系统使用了哪些技术 we ...