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


Posted in Javascript onAugust 26, 2019

安装依赖

安装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地址拼音即可。

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

查看网页结构:

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

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

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/

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

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爬虫如何获取天气和每日问候详解

总结

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

Javascript 相关文章推荐
javascript中关于break,continue的特殊用法与介绍
May 24 Javascript
JS定时关闭窗口的实例
May 22 Javascript
纯文字版返回顶端的js代码
Aug 01 Javascript
JavaScript设计模式之外观模式介绍
Dec 28 Javascript
JavaScript检查数字是否为整数或浮点数的方法
Jun 09 Javascript
老生常谈 js中this的指向
Jun 30 Javascript
Bootstrap CSS布局之图像
Dec 17 Javascript
Bootstrap实现翻页效果
Nov 27 Javascript
开发一个Parcel-vue脚手架工具(详细步骤)
Sep 22 Javascript
详解vue文件中使用echarts.js的两种方式
Oct 18 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
Jan 17 Javascript
微信小程序实现拨打电话功能的示例代码
Jun 28 Javascript
vue移动端实现手机左右滑动入场动画
Jun 17 #Javascript
详解vuex数据传输的两种方式及this.$store undefined的解决办法
Aug 26 #Javascript
JS阻止事件冒泡的方法详解
Aug 26 #Javascript
express框架中使用jwt实现验证的方法
Aug 25 #Javascript
JS异步处理的进化史深入讲解
Aug 25 #Javascript
Vue源码分析之Vue实例初始化详解
Aug 25 #Javascript
javascript导出csv文件(excel)的方法示例
Aug 25 #Javascript
You might like
深入php处理整数函数的详解
2013/06/09 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
PHP实现接收二进制流转换成图片的方法
2017/01/10 PHP
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
jquery实现的网页自动播放声音
2014/04/30 Javascript
JS小游戏之宇宙战机源码详解
2014/09/25 Javascript
使用javascript实现Iframe自适应高度
2014/12/24 Javascript
javascript继承的六大模式小结
2015/04/13 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
基于vue开发的在线付费课程应用过程
2018/01/25 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
基于JavaScript伪随机正态分布代码实例
2019/11/07 Javascript
JavaScript中作用域链的概念及用途讲解
2020/08/06 Javascript
vue实现点击出现操作弹出框的示例
2020/11/05 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
基于Python如何使用AIML搭建聊天机器人
2016/01/27 Python
Python 备份程序代码实现
2017/03/06 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
MAC中PyCharm设置python3解释器
2017/12/15 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
Python chardet库识别编码原理解析
2020/02/18 Python
python初步实现word2vec操作
2020/06/09 Python
浅谈keras中loss与val_loss的关系
2020/06/22 Python
基于HTML5的WebSocket的实例代码
2018/08/15 HTML / CSS
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
Omio荷兰:预订火车、巴士和机票
2018/11/04 全球购物
2019年分享net面试的经历和题目
2016/08/07 面试题
2014教师党员自我评议总结
2014/09/19 职场文书
会计工作态度自我评价
2015/03/06 职场文书
学生会工作感言
2015/08/07 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
sql中mod()函数取余数的用法
2021/05/29 SQL Server
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android
Python实现归一化算法详情
2022/03/18 Python