node爬虫实战

使用nodejs进行爬虫实战

Posted by wang chong on February 1, 2019

本篇文章主要讲解一下使用nodejs来做爬虫。

什么是爬虫??

爬虫是一种自动获取网页内容的程序.是搜索引擎的重要组成部分,因此搜索引擎优化很大程序上就是针对爬虫而做的优化。简单的来说爬虫就是拿到页面上的一段html代码。

什么是robots协议

robots其实就是一个.txt类型文本文件,它是一个协议,不是命令。robots主要是作为爬虫在爬取网站的时候首要看的一个文件。robots文件上指定着什么文件可以爬取,什么文件不可以爬取什么文件不可以爬取。搜索机器人就会按照该文件中的内容来确定访问范围。

node配置爬虫系统和开发环境

使用nodejs做爬虫依附于三个东西:

  1. Express :node服务端框架为爬虫系统起服务
  2. Request :后端发送请求的模块
  3. Cheerio 可以向前端一样操控从后端拉去过来的数据,可以动态的去分析所有的Dom元素,可以向jQuery一样操纵Dom元素(前提是要把html转化成Dom树)

最终要的也就是这个Cheerio了,它可以将Request请求过来的html文件,像前端jQuery一样去处理这个文件。

开始

初始化项目

npm init -y

安装三个模块

npm install express request cheerio –save

简单搭建一个web服务

const express = require('express');
const request = require('request');
const cheerio = require('cheerio')
const app = express();

app.get('/',(req,res) => {
    request('https://www.baidu.com/',(error,response,body) => {
        //err 是否出错
        //res 是响应对象
        //body 页面的内容
        if(!error && res.statusCode == 200){
            //当前的$相当与拿到整个Body的前端选择器
            $ = cheerio.load(body)
            res.set("Content-Type","application/json;charset=urf8");
            res.json({
                "data" : $('#su').val(),
            })
        }
    })
})

app.listen(8080,()=> {
    console.log('server is running...');
    console.log('http://127.0.0.1:8080');
})

上面代码是爬百度的首页然后找到百度一下按钮取出它的value值。

就像上面这样获取到body的前端选择器,然后就可以使用jQuery的语法去爬取网页上的信息。