Node.js爬虫获取天气以及每日一句

安装依赖

安装node.js,同时安装好依赖:

npm install request --save // http请求库
npm install cheerio --save // 分析html工具
npm install express --save // nodejs web框架

获取墨迹天气

地址示例:
东莞 https://tianqi.moji.com/weather/china/Guangdong/dongguan
广州 https://tianqi.moji.com/weather/china/guangdong/guangzhou
深圳 https://tianqi.moji.com/weather/china/guangdong/shenzhen

可打开墨迹天气网站找到女朋友对应城市修改url地址拼音即可。

查看网页结构:


下面开始提取网页天气信息:

const request = require("request")
const cheerio = require("cheerio")
const weatherURL = 'https://tianqi.moji.com/weather/china/Guangdong/dongguan'

// 获取墨迹天气提示信息
function getWeatherTips(url) {
    return new Promise((resolve,reject)=>{
    	request(weatherURL,(error,res,body)=>{
    	  if (!error) {
    	    let html = res.body || "";
    		let $ =cheerio.load(html)
    		let temp = $('.wea_weather em').text().trim()+'℃'
    		let desc = $('.wea_weather b').text().trim()
    		let water = $('.wea_about span').text().trim()
    		let win = $('.wea_about em').text().trim()
    		let tips = $('.wea_tips em').text().trim()
    		let words=`今日${city}天气\n${desc}\n温度:${temp}\n湿度:${water}\n风力:${win}\n${tips}`
    		resolve(words)
    	} else {
    		reject(error)
    	}      
      })
   })   
}

获取每日一句

地址:http://wufazhuce.com/

const greetingURL = 'http://wufazhuce.com/'
// 获取wufazhuce.com每日一句
function getDailyGreeting() {
    return new Promise((resolve,reject)=>{
    	request(greetingURL,(error,res,body)=>{
    		let everyDayWordsList = [];
    		if(!error && res.statusCode==200) {
    			let $ = cheerio.load(res.body.toString())
    				$('div .fp-one-cita a').each(function(item){
    					if($(this).text()){
    						everyDayWordsList.push($(this).text().trim())
    					}           
    				})
    			let result = everyDayWordsList[0] || '网络错误,获取每日问候失败!'
    			resolve(result)    
    		} else {
    			reject(error)				
    		}
    	})
    })
}

计算在一起天数

// 计算在一起的日子
function getDiffDate(targetDate) {
    let date1 = new Date(targetDate);
    let date2 = new Date();
    date1 = new Date(date1.getFullYear(), date1.getMonth(), date1.getDate());
    date2 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate());
    const diff = date2.getTime() - date1.getTime();
    const diffDate = diff / (24 * 60 * 60 * 1000);
    return `宝贝,这是我们在一起的${diffDate}天`
}

接口调用

var express=require('express');
var app=express();
const api = require('./crawer.js')
app.get('/words',async function(req,res){
   let dateTips = api.getDiffDate()
   let weather  = await api.getWeatherTips()
   let words    = await api.getDailyGreeting()
   let str =`${dateTips}\n${weather}\n${words}`
   res.writeHead(200,  {'Content-Type': 'application/json; charset=utf-8'})
   res.end(str)
})
var server = app.listen(8083, function () { // 启动ip和端口
    var port = server.address().port
    console.log("应用实例,访问地址为 http://%s:%s", port)
})

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值