什么是nodeJs

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。Node.js 的包管理器 npm,是全球最大的开源库生态系统。

开启我们的第一个nodejs项目

首先可以去nodejs官网来下载nodejs并安装http://nodejs.cn/。
安装完成后,通过npm来安装我们的express框架 npm install express --save

//app.js
//引入 `express` 模块
var express = require('express');//调用 express 实例并将这个变量赋予 app 变量。
var app = express();// app 本身有很多方法,其中包括最常用的 get、post、put/patch、delete,在这里我们调用其中的 get 方法,为我们的 `/` 路径指定一个 handler 函数。
// 这个 handler 函数会接收 req 和 res 两个对象,他们分别是请求的 request 和 response。
// request 中包含了浏览器传来的各种信息,比如 query 啊,body 啊,headers 啊之类的,都可以通过 req 对象访问到。
// res 对象,我们一般不从里面取信息,而是通过它来定制我们向浏览器输出的信息,比如 header 信息,比如想要向浏览器输出的内容。这里我们调用了它的 #send 方法,向浏览器输出一个字符串。
app.get('/',function(req,res){res.send('hello world');
})// 定义好我们 app 的行为之后,让它监听本地的 3000 端口。这里的第二个函数是个回调函数,会在 listen 动作成功后执行,我们这里执行了一个命令行输出操作,告诉我们监听动作已完成。
app.listen(3000, function () {console.log('app is listening at port 3000');
});

运行 node app.js 并且访问http://localhost:3000/即可看到 hello world

爬虫依赖

所谓 工欲善其事必先利其器,完成nodejs爬虫还需要加两个库:
superagent(http://visionmedia.github.io/superagent/ ) 是个 http 方面的库,可以发起 get 或 post 请求。
cheerio(https://github.com/cheeriojs/cheerio ) 大家可以理解成一个 Node.js 版的 jquery,用来从网页中以 css selector 取数据,使用方式跟 jquery 一样一样的。
分别安装npm install superagent --save npm install cheerio --save

抓取抽屉新热榜数据

先从简单的开始,我们来以抽屉新热榜为例子。访问 http://dig.chouti.com/,通过浏览器的调试器来看抽屉的dom结构,可以看到.part2的类上有用于分享的属性,我们就可以直接通过jquery的语法来读取标题,图片和超链接这几个属性


可以看到新热榜数据都在 id为'content-list'的div中,于是我们展开content-list来继续查看数据


发现有个class为'part2'的div里面有 share

app.js
//引入 `express` 模块
var express = require('express');
//引入 `superagent` 库
var superagent = require('superagent');
//引入 `cheerio` 库
var cheerio = require('cheerio');
//调用 express 实例并将这个变量赋予 app 变量。
var app = express();// app 本身有很多方法,其中包括最常用的 get、post、put/patch、delete,在这里我们调用其中的 get 方法,为我们的 `/` 路径指定一个 handler 函数。
// 这个 handler 函数会接收 req 和 res 两个对象,他们分别是请求的 request 和 response。
// request 中包含了浏览器传来的各种信息,比如 query 啊,body 啊,headers 啊之类的,都可以通过 req 对象访问到。
// res 对象,我们一般不从里面取信息,而是通过它来定制我们向浏览器输出的信息,比如 header 信息,比如想要向浏览器输出的内容。这里我们调用了它的 #send 方法,向浏览器输出一个字符串。
app.get('/', function (req, res, next) {// 用 superagent 去抓取 http://dig.chouti.com/ 的内容superagent.get('http://dig.chouti.com/').end(function (err, sres) {// 常规的错误处理if (err) {return next(err);}// sres.text 里面存储着网页的 html 内容,将它传给 cheerio.load 之后// 就可以得到一个实现了 jquery 接口的变量,我们习惯性地将它命名为 `$`// 剩下就都是 jquery 的内容了var $ = cheerio.load(sres.text);var items = [];$('#content-list .part2').each(function (idx, element) {var $element = $(element);items.push({title: $element.attr('share-title'),href: $element.attr('href'),img: $element.attr('share-pic')});});res.send(items);});
});// 定义好我们 app 的行为之后,让它监听本地的 3000 端口。这里的第二个函数是个回调函数,会在 listen 动作成功后执行,我们这里执行了一个命令行输出操作,告诉我们监听动作已完成。
app.listen(3000, function () {console.log('app is listening at port 3000');
});

运行 node app.js 访问: http://localhost:3000/,可以看到抓取的数据直接以json格式显示出来了。

nodejs爬虫实战(一):抽屉新热榜相关推荐

  1. 【Python爬虫实战】知乎热榜数据采集,上班工作摸鱼两不误,知乎热门信息一网打尽

    目录 爬取目标 工具使用 项目思路解析 简易源码分享 爬取目标 网址:知乎热榜 工具使用 开发环境:win10.python3.7 开发工具:pycharm.Chrome 工具包:requests,l ...

  2. Python爬虫抓取B站热榜

    Python爬虫抓取B站热榜 环境 Python 3.7.4 bs4==0.0.1 pandas==1.0.1 urllib3==1.24.2 re 实现代码 # -*- coding:utf-8 - ...

  3. pyhton爬虫实战-爬取新浪国内新闻

    第一次实战爬虫,爬取了新浪国内的最新的首页新闻,附效果截图: 附代码: import requests from bs4 import BeautifulSoup import json import ...

  4. nodejs爬虫实战_nodejs爬虫项目实战

    这篇文章主要介绍了NodeJS制作爬虫的全过程,包括项目建立,目标网站分析.使用superagent获取源数据.使用cheerio解析.使用eventproxy来并发抓取每个主题的内容等方面,有需要的 ...

  5. nodejs爬虫实战_简单高效的 nodejs 爬虫模型

    这篇文章讲解一下yunshare项目的爬虫模型. 使用 nodejs 开发爬虫很简单,不需要类似 python 的 scrapy 这样的爬虫框架,只需要用 request 或者 superagent ...

  6. 全网首发 自媒体人的秘密武器——即时热榜上线

    在自媒体行业高温不减的当下,热点就是流量.效率就是金钱,如果你真的想要做好自媒体,那么,即时热榜--这个追热点的绝密武器,你必须要知道. 第一,聚合100+平台.1000+热门榜单 作为一个聚合类资讯 ...

  7. 【爬虫实战】Python 爬取起点热榜,再也不怕没有小说看了!

    最近看完一部小说<大奉打更人>,看得我热血沸腾.但是看完后,有选择困难症的我又不知道可以看什么了. 于是,我打算开发一个爬虫,爬取起点热榜. 一.导入所需库 我们使用 requests 来 ...

  8. NLP 实战 (7) | 热榜算法更新

    更新日志 2022/09/15 热榜 v3.7.3.8 上线: 增加文章因为分享带来的站外访客因子: 加入新增的前沿技术相关标签,并设置权重. 贡献者:@卢昕 2022/09/08 热榜 v3.7.3 ...

  9. python爬虫实战(2)——爬取知乎热榜内容

    文章目录 一.前期准备 1.获取headers 2.查看网页源代码 二.python代码实现 1.解析网页 2.获取标签 3.完整代码 三.最终结果 一.前期准备 1.获取headers 登录知乎官网 ...

  10. 用爬虫分析上热榜涨的600粉,竟发现。。。(含代码和详解)

    目录 前言 下面我就分享一下这次经历! 1.编程环境及相关库的安装 1.1.编程环境: 1.2.第三方库: 1.3库的安装方法: 1.3.1.Windows的shell命令安装 1.3.2.在编程环境 ...

最新文章

  1. 【CSDN2012年度博客之星】需要您的一票,感谢大家的支持
  2. pandas数据清洗(缺失值、异常值和重复值处理)
  3. C++中floor,ceil , round , rint用法
  4. 算法 - 交换排序(C++)
  5. 【机器学习】机器学习视角下的因果推断
  6. python flask 大文件 下载_python flask 建站之文件上传下载(一)
  7. Oracle建立全文索引详解
  8. CURLE_WRITE_ERROR
  9. 北京联合大学计算机学院在哪个校区,北京联合大学各校区联系地址大全
  10. Linux软件安装及基本概念
  11. Springboot整合SpringSecurity--对静态文件进行权限管理
  12. 2013蓝桥杯C++B:高斯日记;马虎的算式(2种解法)
  13. 《基于MFC的OpenGL编程》Part 3 Drawing Simple 2D Shapes
  14. 基于MATLAB的身份证号码识别系统
  15. PS颜色校正(Photoshop颜色显示偏色)
  16. php imagick 缩略图,PHP利用imagick生成组合缩略图,imagick缩略图_PHP教程
  17. 鸿蒙系统底部任务栏无响应,win10底部任务栏无响应两种修复方法
  18. 计算机ip地址会变吗,电脑IP地址会变吗?
  19. 【Excel绝技】之 快速数据填充
  20. vim编辑器如何删除一行或者多行内容

热门文章

  1. angular整合环信webIM
  2. 【APP推荐】手机制作微电影
  3. 菜鸟最初级网络安全常识
  4. Moss 2007入门--功能概述
  5. 基于MQTT的python聊天室
  6. 第四章网页文字编排设计
  7. 100 offer:为什么你不需要做一名全栈工程师?
  8. Portal是什么东东
  9. OSS回源的几种方式和应用场景
  10. 中国各大银行卡号查询