异步爬取数据

先引入

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 写的简单爬虫(三)的更多相关文章

  1. node 写的简单爬虫(一)

    安装cheerio npm install cheerio --save 引入http和cheeri var http=require("http"); var cheerio=r ...

  2. 用node.js写一个简单爬虫,并将数据导出为 excel 文件

    引子 最近折腾node,最开始像无头苍蝇一样到处找资料,然而多数没什么卵用,都在瞎比比.在一阵瞎搞后,我来分享一下初步学习node的三个过程: 1 撸一遍NODE入门,对其有个基本的了解: 2 撸一遍 ...

  3. C#写一个简单爬虫

    最近研究C#的爬虫写法,搞了半天,才在网上很多的写法中整理出了一个简单的demo(本人菜鸟,大神勿喷).一是为了自己记录一下以免日后用到,二是为了供需要朋友参考. 废话不多说,上代码 using Ht ...

  4. 用node写个简单的静态服务器

    直接上代码吧,我把它命名为 app.js, 只要在该文件所在目录下,控制台运行 node app.js 即可启动一个本地服务器了. /** * 服务器 * Author jervy * Date */ ...

  5. 使用node写一个简单的页面操作

    let http = require('http'); let urlStr = require('url'); let fs = require('fs'); let path = require( ...

  6. 第一次用python 写的简单爬虫 记录在自己的博客

    #python.py from bs4 import BeautifulSoup import urllib.request from MySqlite import MySqlite global ...

  7. 用node.js从零开始去写一个简单的爬虫

    如果你不会Python语言,正好又是一个node.js小白,看完这篇文章之后,一定会觉得受益匪浅,感受到自己又新get到了一门技能,如何用node.js从零开始去写一个简单的爬虫,十分钟时间就能搞定, ...

  8. 手把手教你学node.js之使用 superagent 与 cheerio 完成简单爬虫

    使用 superagent 与 cheerio 完成简单爬虫 目标 建立一个 lesson 3 项目,在其中编写代码. 当在浏览器中访问 http://localhost:3000/ 时,输出 CNo ...

  9. node的简单爬虫

    最近在学node,这里简单记录一下. 首先是在linux的环境下,关于node的安装教程:   https://github.com/alsotang/node-lessons/tree/master ...

随机推荐

  1. (转载)JavaScript世界万物诞生记

    一. 无中生有 起初,什么都没有.造物主说:没有东西本身也是一种东西啊,于是就有了null: 现在我们要造点儿东西出来.但是没有原料怎么办?有一个声音说:不是有null嘛?另一个声音说:可是null代 ...

  2. 使用cmd查看windows端口占用情况,并关闭应用

    在做开发的时候常常会遇到端口被占用的问题,下面是我在网上找的比较好用的一种关闭占用端口进程的方法 1.在运行中输入cmd打开dos命令窗口,比如我想找到端口8888对应的PID(通过PID找到相应的进 ...

  3. Thinkphp 加载更多

    要实现的效果是这样的: 每次点击显示更多按钮,都会往下显示2条数据,直到后面没有数据了.. 数据表: articleList模板文件 <include file="./Applicat ...

  4. Uva10795 A Different Task

    A Different Task https://vjudge.net/problem/UVA-10795 题目大意:给定一个汉诺塔初末状态,求从初状态到末状态最少需要多少步. 考虑最大的一个初末不同 ...

  5. Effective Modern C++ 条款4:掌握查看型别推导结果的方法

    采用何种工具来查看型别推导结果,取决于你在软件开发过程的哪个阶段需要该信息.主要研究三个可能的阶段:撰写代码阶段.编译阶段.运行时阶段. IDE编译器 IDE中的代码编译器通常会在你将鼠标指针选停止某 ...

  6. ajax--表单带file数据提交报错Uncaught TypeError: Illegal invocation

    只要设置 contentType: false, //不设置内容类型 processData: false, //不处理数据 $("#btn").on("click&qu ...

  7. VC开发多语言界面 多种方法(非常easy) 有源代码

    源代码地址(专业定制程序:MCU,Windows,Android .VC串口,Android蓝牙等不限.) (需源代码先留邮箱)先上图 1.通过遍历 得到全部控件ID号与TEXT,得到一个中文语言配置 ...

  8. Oracle删除当前用户下所有的表的方法1

    1.如果有plsql客户端,则可以使用该用户登录,选中所有表 右键Drop即可. 2.如果有删除用户的权限,则可以: ? 1 drop user user_name cascade; 加了cascad ...

  9. API安全验证之JWT(JSON WEB TOKEN) OLCMS

    假如www.olcms.com/getUserInfo获取用户信息,你怎么知道当前用户是谁?有人说登陆时候我把他UID写入session了,如果是API接口,没有session怎么办,那么就需要把UI ...

  10. web前端学习(二)html学习笔记部分(3)--range对象

    1.2.8  html5编辑api之range对象(一) 1.2.8.1  Range 对象基本概念 Range 对象的基本概念,通过使用 Range 对象所提供的方法实现一个鼠标选取内容,通过点击按 ...