目标

建立一个 lesson3 项目,在其中编写代码。

当在浏览器中访问 http://localhost:3000/ 时,输出 CNode(https://cnodejs.org/ ) 社区首页的所有帖子标题和链接,以 json 的形式

知识点:

  1. 学习使用 superagent 抓取网页
  2. 学习使用 cheerio 分析网页

库介绍:

superagent(http://visionmedia.github.io/superagent/ ) 是个 http 方面的库,可以发起 get 或 post 请求。

cheerio(https://github.com/cheeriojs/cheerio ) 大家可以理解成一个 Node.js 版的 jquery,用来从网页中以 css selector 取数据,使用方式跟 jquery 一样一样的。

创建项目相关命令:

  1. 新建一个文件夹,进去之后 npm init
  2. 安装依赖 npm install --save PACKAGE_NAME
  3. 写应用逻辑

安装2个库和express

nmp install --save express
nmp install --save superagent
nmp install --save cheerio
var superagent = require('superagent');
var express = require('express');
var cheerio = require('cheerio'); var app = express(); app.get('/', function(req, res, next ) {
superagent.get('https://cnodejs.org/')
.end( function( err, sres ) {
if (err){
return next(err);
} var $ = cheerio.load(sres.text);
var items = [];
// sres.text 里面存储着网页的 html 内容,将它传给 cheerio.load 之后
// 就可以得到一个实现了 jquery 接口的变量,我们习惯性地将它命名为 `$`
// 剩下就都是 jquery 的内容了
$('#topic_list .topic_title ').each(function(idx, element ){
var $element = $(element);
items.push({
title: $element.attr('title'),
href: $element.attr('href')
});
});
//new
$('#topic_list .user_avatar ').each(function(idx, element) {
var $element = $(element);
items[idx]['author'] = $element.attr('href').split('/')[2]
}); res.send(items);
});
}); app.listen(3000, function (req, res) {
console.log('app is running at port 3000');
});

node.js 使用 superagent 与 cheerio 完成简单爬虫的更多相关文章

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

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

  2. Node.js的学习--使用cheerio抓取网页数据

    打算要写一个公开课网站,缺少数据,就决定去网易公开课去抓取一些数据. 前一阵子看过一段时间的Node.js,而且Node.js也比较适合做这个事情,就打算用Node.js去抓取数据. 关键是抓取到网页 ...

  3. Node.js基于Express框架搭建一个简单的注册登录Web功能

    这个小应用使用到了node.js  bootstrap  express  以及数据库的操作 :使用mongoose对象模型来操作 mongodb 如果没了解过的可以先去基本了解一下相关概念~ 首先注 ...

  4. node.js(node.js+mongoose小案例)_实现简单的注册登录退出

    一.前言 通过node.js基本知识对node.js基本知识的一个简单应用 1.注册 2.登录 3.退出 二.基本内容 1.项目结构搭建如图所示 2.这个小案列中用到了art-template子模板以 ...

  5. node.js抓取数据(fake小爬虫)

    在node.js中,有了 cheerio 模块.request 模块,抓取特定URL页面的数据已经非常方便. 一个简单的就如下 var request = require('request'); va ...

  6. Node.js实现TCP和HTTP并作简单的比较

    TCP和Node 传输控制协议是一个面向连接的协议,换句话说,它是一个传输层的协议,它主要的职务呢,就是确保信息传输的正确性. 我们使用的很多如HTTP协议都是基于TCP的,为什么呢?因为我们不希望传 ...

  7. node.js+mysql把数据显示到前端简单实例

    原以为数据查出来了,要展示是鸡毛蒜皮的事儿!谁知道,我弄了一天....我错就错在没把connection.query里面. 下面的例子是可以的了! 看过我之前文章的同学,应该很熟悉下面的代码,对!主要 ...

  8. 在nginx服务器里面搭建好node.js本地服务器后,利用Node.js的FS模块,实现简单数据的写入和读取

    先在server.js里面引入: var fs = require('fs');   然后写入  // 往writeme.txt文件 写入一些内容     fs.writeFile('./writem ...

  9. Node.js学习笔记(4)--简单路由,老师学生id

    说明(2017-5-2 17:57:23): 1. foo.js var http = require("http"); var url = require("url&q ...

随机推荐

  1. PHP批量保存图片

    关于这个问题网上也有回答,我只是把我在工作中用到的代码分解出来,供需要的朋友使用.以下代码都已经经过测试,所以没有任何问题.有问题请加QQ:1127173874 第一部分 数据库表结构 create ...

  2. 9Linux_LVM_iptables

    LVM 创建物理卷 卷组 逻辑卷 格式化 挂载 扩容 缩小 快照 删除逻辑卷

  3. 2018-2019-2 网络对抗技术 20165304 Exp3 免杀原理与实践

    2018-2019-2 网络对抗技术 20165304 Exp3 免杀原理与实践 免杀原理及基础问题回答 一.免杀原理 一般是对恶意软件做处理,让它不被杀毒软件所检测.也是渗透测试中需要使用到的技术. ...

  4. struts2注解json 配置文件json

    java提供了便捷的Json-lib  类库,能够让我们很方便的将 Array / JavaBean / Map 解析成 JSON 串,当然反之也是可以的. struts2借助于json-lib类库, ...

  5. Idea安装lombok插件【转载】

    参照:http://www.cnblogs.com/holten/p/5729226.html https://yq.aliyun.com/articles/59972 lombok是一个可以通过简单 ...

  6. 导入大数据量sql时候超时的问题

    D:\Visual-NMP-x64\Bin\MySQL\bin这个是你mysql的路径 mysqldump.exe -h服务器信息 -umysql的用户名 -pmysql的密码 数据库名 > 要 ...

  7. (译)MySQL的10个基本性能技巧

    原文出处:https://www.infoworld.com/article/3210905/sql/10-essential-performance-tips-for-mysql.html MySQ ...

  8. linux 之 shell

    echo 输出命令 语法:echo [选项][输出内容] 选项 -e:支持反斜线控制的字符转换 范例 vi hello.sh #!/bin/bash #author liuch echo " ...

  9. python day09 函数(第一篇)

    2019.4.9 S21 day09笔记总结 一.三元运算 三元运算又叫三目运算.(是为了赋值的) v = 前面 if 条件 else 后面 #条件为真,v取if前面的值:条件为假,v取if后面的值 ...

  10. 3G设置linux路由-iptables配置

    1.如何区分iptables的PREROUTING和POSTROUTING链 (引自http://jingyan.baidu.com/article/aa6a2c143d84470d4c19c4cf. ...