Node.js爬虫如何获取天气和每日问候详解

 更新时间:2019年08月26日 08:39:02   作者:Mango在掘金  
这篇文章主要给大家介绍了关于Node.js爬虫如何获取天气和每日问候的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Node.js爬虫具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

安装依赖

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

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

获取墨迹天气

地址示例:

东莞 tianqi.moji.com/weather/chi

广州 tianqi.moji.com/weather/chi

深圳 tianqi.moji.com/weather/chi

可打开墨迹天气网站找到女朋友对应城市修改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)
 	} 
 })
 }) 
}

获取每日一句

地址: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)
})

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • node.js之基础加密算法模块crypto详解

    node.js之基础加密算法模块crypto详解

    这篇文章主要介绍了node.js之基础加密算法模块crypto详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • ubuntu编译nodejs所需的软件并安装

    ubuntu编译nodejs所需的软件并安装

    Node 在 Linux,Macintosh,Solaris 这几个系统上都可以完美的运行,linux 的发行版本当中使用 Ubuntu 相当适合。这也是我们为什么要尝试在 ubuntu 上安装 Node.js,
    2017-09-09
  • Node.js文件系统fs扩展fs-extra说明

    Node.js文件系统fs扩展fs-extra说明

    这篇文章主要介绍了Node.js文件系统fs扩展fs-extra说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-08-08
  • Node.js中ES6模块化及Promise对象

    Node.js中ES6模块化及Promise对象

    这篇文章主要介绍了Node.js中ES6模块化及Promise对象,node.js 遵循了 CommonJS 的模块化规范,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • Node.js内置模块events事件监听发射详解

    Node.js内置模块events事件监听发射详解

    这篇文章主要为大家介绍了Node.js内置模块events事件监听发射详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Node.js实现大文件断点续传示例详解

    Node.js实现大文件断点续传示例详解

    这篇文章主要为大家介绍了Node.js实现大文件断点续传示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • Mongoose中document与object的区别示例详解

    Mongoose中document与object的区别示例详解

    这篇文章主要给大家介绍了关于Mongoose中document与object区别的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-09-09
  • Node.js利用js-xlsx处理Excel文件的方法详解

    Node.js利用js-xlsx处理Excel文件的方法详解

    这篇文章主要给大家介绍了关于Node.js利用js-xlsx处理Excel文件的相关资料,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
    2017-07-07
  • Node.js文件操作详解

    Node.js文件操作详解

    这篇文章主要介绍了Node.js文件操作详解,本文讲解了处理文件路径讲的一些方法、fs模块详细的使用和介绍等内容,需要的朋友可以参考下
    2014-08-08
  • Node.js中的缓冲与流模块详细介绍

    Node.js中的缓冲与流模块详细介绍

    这篇文章主要介绍了Node.js中的缓冲与流模块详细介绍,本文讲解了缓冲(buffer)模块、类:Buffer、写入缓冲区、复制缓冲区、流模块等内容,需要的朋友可以参考下
    2015-02-02

最新评论