最近在学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. 【leetcode】300.Longest Increasing Subsequence

    Given an unsorted array of integers, find the length of longest increasing subsequence. For example, ...

  2. HDU 2162 Add ‘em

    http://acm.hdu.edu.cn/showproblem.php?pid=2162 Problem Description Write a program to determine the ...

  3. selenium webdriver 表格的定位方法练习

    selenium webdriver 表格的定位方法 html 数据准备 <html> <body> <div id="div1"> <i ...

  4. 【php】提交的特殊字符会被自动转义

    在处理mysql和GET.POST的数据时,常常要对数据的引号进行转义操作. PHP中有三个设置可以实现自动对’(单引号),”(双引号),\\(反斜线)和 NULL 字符转移. PHP称之为魔术引号, ...

  5. Spring boot整合shiro框架

    ShiroConfiguration package com.energy.common.config; import java.util.LinkedHashMap; import java.uti ...

  6. HDU4747——2013 ACM/ICPC Asia Regional Hangzhou Online

    啦啦啦. 这是杭州网赛的一个题目,当时没做出来,当然这个想法确实比较难想到. 题目质量很高,这个题目也很特别,以前都没做过类似的题目.让我又一次体验了线段树的强大力量. 题目的意思是给你n个数a1-a ...

  7. solr源码分析之searchComponent

    上文solr源码分析之数据导入DataImporter追溯中提到了solr的工作流程,其核心是各种handler. handler定义了各种search Component, @Override pu ...

  8. Day21-模板之继承

    一,模板之继承 1.在template下面新建一个master.html的文件,当做母版. 2. 母版里需要被替代的部分,以block开始,以endblock结尾 {% block content % ...

  9. 【纪念】NOIP2018前夕——一些想说的话

    刚刚复习了一下相关的内容,决定一会儿就洗洗睡了.在睡觉之前,决定写点东西. 有的时候真的很迷茫,选择了一条超过自己能力范围的路,每天挣扎在各种各样难题的面前,文化成绩一落千丈……在从前觉得这一切都是有 ...

  10. CF1093F Vasya and Array DP

    题面 题面 \(\Delta\)题面有点问题,应该是数列中没有长度大于等于\(len\)的连续数字才是合法的. 题解 设\(f[i][j]\)表示DP到\(i\)位,以\(j\)为结尾的方案数, \( ...