簡單的node爬蟲存入excel數據分析

入門級的node爬蟲

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

思否社區文章太多?哪一個是我想要的?對比點贊數or對比標題
不用懼怕,本身動手用node來實現爬蟲,麻麻不再用擔憂我學習選擇困難症啦!java

核心代碼

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行哦!node

配置代碼

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查看更完整的內容
爬的不單單是思否,只有你想不到的,沒有我作不到的!git

相關文章
相關標籤/搜索