最近在学node,这里简单记录一下。

首先是在linux的环境下,关于node的安装教程:   https://github.com/alsotang/node-lessons/tree/master/lesson0

我看的教程里面还用来express框架 键入 $ npm install express --registry=https://registry.npm.taobao.org 来安装

这样基本的环境就弄好了,装好以后来创建项目,过程如下:

1.随便建一个文件夹,比如说是lesson3

2.初始化(键入 $ npm init ),这里要让你设置 packag.json 文件,这个文件是用来记录项目的信息的,项目名,作者什么的,如果你没什么好写的就一路回车

3.安装依赖包,(键入 $ npm install  ---save packagename),没有指定的情况下,默认从 npm 官方安装,上次我们是从淘宝的源安装的。二是多了个 --save 参数,这个参数的作用,就是会在你安装依赖的同时,自动把这些依赖写入 package.json

爬虫需要 superagent 和 cheerio

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

cheerio可以理解为node端的jquery,爬虫的爬下来网页以后用类似jquery选择器的方式就能对dom树进行操作

4.写应用逻辑

逻辑也是三步:

4.1加载依赖

4.2处理爬虫

4.3监听端口

以cnode为例,https://cnodejs.org/ 可以先到页面上右键然后审查元素看看自己想要扒什么

新建一个app.js文件,然后上代码:

//请求依赖
var express = require('express') ;
var superagent = require('superagent') ;
var cheerio = require('cheerio') ;
var sys = require('sys') ;
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 = [] ;
//利用cheerio来获取页面信息,each函数来遍历所有节点
var context = $('#topic_list .cell') ;
context.each(function(idx,element){
console.error(this) ;
//作者名是从链接里扒出来的,所以用split处理一下
var name = $(this).find('.user_avatar').attr('href').split('/')[2] ;
var element = $(this).find('.topic_title') ;
obj = this ;
items.push({
title:element.attr('title'),
href:element.attr('href'),
author:name
});
});
//将结果输出到页面
res.send(items) ;
});
});
//监听部分,监听3000端口
app.listen(3000,function(req,res){
console.log('3000 is running');
});

这里注意就是和jq一样,在一个对象的方法中调用对象要再用$()把this包起来才有相应的方法。

键入命令 $ node app.js来运行,从浏览器上访问 http://localhost:3000/ 来查看结果

结果如图:

学习是按照《Node.js 包教不包会》 -- by alsotang 来进行的,这里是网址 https://github.com/alsotang/node-lessons

node的简单爬虫的更多相关文章

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

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

  2. nodejs的简单爬虫

    闲聊       好久没写博客了,前几天小颖在朋友的博客里看到了用nodejs的简单爬虫.所以小颖就自己试着做了个爬博客园数据的demo.嘻嘻......      小颖最近养了条泰日天,自从养了我家 ...

  3. 基于node.js制作爬虫教程

    前言:最近想学习node.js,突然在网上看到基于node的爬虫制作教程,所以简单学习了一下,把这篇文章分享给同样初学node.js的朋友. 目标:爬取 http://tweixin.yueyishu ...

  4. Python开发简单爬虫(一)

    一 .简单爬虫架构: 爬虫调度端:启动爬虫,停止爬虫,监视爬虫运行情况 URL管理器:对将要爬取的和已经爬取过的URL进行管理:可取出带爬取的URL,将其传送给“网页下载器” 网页下载器:将URL指定 ...

  5. Jsoup-解析HTML工具(简单爬虫工具)

    Jsoup-解析HTML工具(简单爬虫工具) 一.简介 ​ jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址.HTML文本内容.它提供了一套非常省力的API,可通过DOM,CSS ...

  6. Python简单爬虫入门三

    我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...

  7. [Java]使用HttpClient实现一个简单爬虫,抓取煎蛋妹子图

    第一篇文章,就从一个简单爬虫开始吧. 这只虫子的功能很简单,抓取到”煎蛋网xxoo”网页(http://jandan.net/ooxx/page-1537),解析出其中的妹子图,保存至本地. 先放结果 ...

  8. 简单爬虫,突破IP访问限制和复杂验证码,小总结

    简单爬虫,突破复杂验证码和IP访问限制 文章地址:http://www.cnblogs.com/likeli/p/4730709.html   好吧,看题目就知道我是要写一个爬虫,这个爬虫的目标网站有 ...

  9. Python简单爬虫入门二

    接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...

随机推荐

  1. 在原有的基础之上,启用NAT模型

    # 给虚拟主机实例添加一个网关 route add default gw 192.168.23.1   # 在宿主机打开网卡间转发功能 echo 1 > /proc/sys/net/ipv4/i ...

  2. openssl 加密算法 CA 介绍

    首先对于tftp服务的简要使用说明 (1)yum安装:tftp.tftp-server   (2)启动tftp CentOS 6 service xinetd restart chkconfig tf ...

  3. 转 maven3常用命令、java项目搭建、web项目搭建详细图解

    转自地址:http://blog.csdn.net/edward0830ly/article/details/8748986 ------------------------------maven3常 ...

  4. Java对象空间分配流程

    对象空间分配流程如下:   针对这个流程,分别解释一下每一个选项的使用场景. 栈上分配: 栈上分配的基础在于逃逸分析,逃逸分析可以得到三种对象的逃逸状态. 全局逃逸:一个对象的引用逃出了方法或者线程. ...

  5. 【bzoj2329】[HNOI2011]括号修复 Splay

    题目描述 题解 Splay 由于有区间反转操作,因此考虑Splay. 考虑答案:缩完括号序列后剩下的一定是 $a$ 个')'+ $b$ 个'(',容易发现答案等于 $\lceil\frac a2\rc ...

  6. Period II FZU - 1901(拓展kmp)

    拓展kmp板题 emm...我比较懒 最后一个字母进了vector两个1  不想改了...就加了个去重... 哈哈 #include <iostream> #include <cst ...

  7. java学习3-Maven的使用

    Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Depen ...

  8. HDU.1846 Brave Game (博弈论 巴什博弈)

    HDU.1846 Brave Game (博弈论 巴什博弈) 题意分析 巴什博奕裸题 博弈论快速入门 代码总览 include <bits/stdc++.h> using namespac ...

  9. SQL注入(SQL Injection)案例和防御方案

    sql注入(SQL Injection):就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令. SQL注入攻击的主要危害包括:非法读取.篡 ...

  10. git使用笔记(十三)ls-files

    By francis_hao    Mar 18,2018   git ls-fles 显示index和工作区的文件的信息. 概要 git ls-files [-z] [-t] [-v]        ...