乐趣区

简单的node爬虫存入excel数据分析

入门级的 node 爬虫

github 地址:https://github.com/lll618xxx/…

思否社区文章太多?哪个是我想要的?对比点赞数 or 对比标题
不用害怕,自己动手用 node 来实现爬虫,麻麻再也不用担心我学习选择困难症啦!

核心代码

const superagent = require('superagent')
const cheerio = require('cheerio')
const xlsx = require('node-xlsx')
const fs = require('fs')
const options = require('./options')

superagent.get(options.url)
    .then(res => {
        const bufferdata = [{
            name: 'sheet1',
            data: [options.attr.map((item, index, arr) => {return arr[index][2]
            })]
        }]
       
        const $ = cheerio.load(res.text);
        
        $(options.ele).each((index, item) => {let arr = []
            options.attr.forEach((v, i, a) => {arr.push(a[i][1] ? $(item).find(a[i][0]).attr(a[i][1]) : $(item).find(a[i][0]).text())
            })
            bufferdata[0].data.push(arr)
        })
       
        fs.writeFile(options.excelPath, xlsx.build(bufferdata), (err) =>{if (err) throw err;
            console.log('写入 Excel 成功');
        })
    })
    .catch(err => {console.log(err)
    });

核心的代码仅仅只有 36 行哦!

配置代码

const path = require('path')

// 定义爬虫的页面
const url = 'https://segmentfault.com/hottest/monthly'
// 定义 excel 存放的路径
const excelPath = path.join(__dirname, 'result.xlsx')
// 定义元素范围
const ele =  'div.wrapper div.news-list div.news__item-info' 
// 定义数据属性 ['具体元素','属性', '别名']
const attr = [['a', 'href', '链接'],
    ['span.votes-num', '',' 点赞数 '],
    ['h4.news__item-title', '',' 标题名字 '],
    ['span.author a', '',' 作者名字 '],
] 

安装依赖

npm i

运行项目

cd node-reptile-simple && node index.js

配置项(options.js)

url 定义爬虫的页面
excelPath 定义 excel 存放的路径
ele 定义元素范围
attr 定义数据属性 ['具体元素','属性', '别名']

截图

可以去 github 查看更完整的内容
爬的不仅仅是思否,只有你想不到的,没有我做不到的!

退出移动版