90 行代码 Node Js 节假日数据爬取

1,141 阅读1分钟

爬取地址: https://fangjia.51240.com/2020__fangjia/

爬取格式

2019年节日放假安排查询

节日放假时间调休上班日期放假天数
元旦12月30日~1月1日12月29日(周六)上班3天
春节2月4日(除夕)~2月10日2月2日(周六)、2月3日(周日)上班7天
清明节4月5日~4月7日与周末连休3天
劳动节5月1日~5月4日4月28日(星期日)、5月5日(星期日)上班4天
端午节6月7日~6月9日与周末连休3天
国庆节10月1日~10月7日9月29日(周日)、10月12日(周六)上班7天
中秋节9月13日~9月15日与周末连休3天

使用

安装:

npm install

启动:

node index.js

爬取:

浏览器访问:127.0.0.1/get/{year}

爬取后,访问结果会持久化在 '/views/holidays/{year}.json',可直接通过 127.0.0.1/{year}.json 访问

返回结果:

{
  year: {year},
  holidays: {
    01: {
      01: 1,
      02: 2
    }
    ……
  }
}

代码说明

技术栈

  • request
  • express
  • cheerio
  • iconv

爬取

app.get('/get/:year', (req, res) => {
  let { year } = req.params
  // 这是爬取地址,替换的话请保证格式和上面的一致
  request.get(`https://fangjia.51240.com/${year}__fangjia/`, (err, response, body) => {
    if(err) return res.json({ err })
    return res.json( { 
      year,
      holiday: operation(body, year) 
    })
  })
})

git:gitee.com/sk88/get_ho…