美文网首页
Node.js_cheerio爬虫

Node.js_cheerio爬虫

作者: learninginto | 来源:发表于2020-02-27 20:26 被阅读0次

Node.js_cheerio爬虫

cheerio.png

Cheeiro的优点有很多:主要是实现了核心jQuery的子集,从jQuery库中消除了所有DOM不一致和浏览器残骸,从而揭示了其真正华丽的API。

  • cheerio使用的一个爬虫案例,需要注意几点:
  1. cheerio只能爬取服务端渲染的内容
  2. 爬取的网站没有HTTPS加密
  3. 因为中node中不能引用DOM,所以需要使用cheerio插件(cheerio官网)封装的方法,以jQuery语法进行DOM查找

以凤凰网的导航栏为例:

  • 导航栏

    nav.png
  • 检查元素

检查元素.png
  • 安装依赖
  1. npm init -y

  2. cnpm install cheerio -S

  • node代码
const http = require("http");
//可以让我们以jQuery语法来进行dom查找  并不是对dom操作
const cheerio = require("cheerio");
//需要用到文件读写模块
const fs = require("fs");
const path = require("path");
const url = "http://tech.ifeng.com/";

http.get(url, (res) => {

    var str = "";
    res.on("data", (data) => {
        str += data;
    })

    res.on("end", () => {
        // 将str封装到$符号中去
        var $ = cheerio.load(str);
        var nav = $(".nav-2sgjEBc8>li");
        var arr = [];
        for (var i = 0; i < nav.length; i++) {
            var obj = {};
            obj.id = i;
            obj.text = nav.eq(i).find("a").text();
            arr.push(obj)
        }

        fs.readFile(path.join(__dirname, "./data/index1.json"),(err,data)=>{
            var dataList = JSON.parse(data + "");

            if(!dataList.data){
                dataList.data = [];
            }
            dataList.data = arr;

            fs.writeFile(path.join(__dirname,"./data/index1.json"),
            JSON.stringify(dataList),(err) =>{})
        })  
    })
})
  • index1.json文件(默认有一对{})
{
    "data": [
        {
            "id": 0,
            "text": "科技首页"
        },
        {
            "id": 1,
            "text": "数码"
        },
        {
            "id": 2,
            "text": "手机"
        },
        {
            "id": 3,
            "text": "5G"
        },
        {
            "id": 4,
            "text": "24H必读"
        },
        {
            "id": 5,
            "text": "风眼"
        },
        {
            "id": 6,
            "text": "凰家评测"
        },
        {
            "id": 7,
            "text": "深度阅读"
        },
        {
            "id": 8,
            "text": "科技视频"
        },
        {
            "id": 9,
            "text": "上市公司财报"
        },
        {
            "id": 10,
            "text": "区块链"
        },
        {
            "id": 11,
            "text": "车科技"
        }
    ]
}

相关文章

  • Node.js_cheerio爬虫

    Node.js_cheerio爬虫 Cheeiro的优点有很多:主要是实现了核心jQuery的子集,从jQuery...

  • 11.20-11.26

    本周目标 爬虫 爬虫 爬虫 爬虫

  • 爬虫入门基础

    Day01 一、爬虫介绍 什么是爬虫 Python爬虫的优势 Python爬虫需要掌握什么 爬虫与反爬虫与反反爬虫...

  • 01-认识爬虫

    一、爬虫介绍 什么是爬虫 Python爬虫的优势 Python爬虫需要掌握什么 爬虫与反爬虫与反反爬虫三角之争 网...

  • 爬虫原理与数据抓取之一: 通用爬虫和聚焦爬虫

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种. 通用爬虫 通用网络爬虫 是 捜索...

  • (了解)通用爬虫和聚焦爬虫--爬虫基础教程(python)(二)

    通用爬虫和聚焦爬虫 根据使用场景,网络爬虫可分为 通用爬虫 和 聚焦爬虫 两种.我们主要写通用爬虫。 通用爬虫 通...

  • Python 网络爬虫(一)

    网络爬虫的基本介绍 学习爬虫,我想主要从以下几个方面来切入 -爬虫的原理? -爬虫的作用? -爬虫的实现? -爬虫...

  • 7.爬虫概述

    爬虫概述 知识点: 了解 爬虫的概念 了解 爬虫的作用 了解 爬虫的分类 掌握 爬虫的流程 1. 爬虫的概念 模拟...

  • 1-基本概念

    简介 为什么选择Python做爬虫 需要技能 爬虫与反爬虫 网络爬虫类型 通用网络爬虫 聚焦网络爬虫 增量式网络爬...

  • 认识爬虫

    前言 我的爬虫笔记 经常看别人通过爬虫分析数据,很有意思,来了兴趣,就开始了爬虫之路。 爬虫 爬虫,即网络爬虫,大...

网友评论

      本文标题:Node.js_cheerio爬虫

      本文链接:https://www.haomeiwen.com/subject/hixfhhtx.html