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 相关文章推荐
利用Keydown事件阻止用户输入实现代码
Mar 11 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
May 20 Javascript
js实现简单随机抽奖的方法
Jan 27 Javascript
javascript实现字符串反转的方法
Feb 05 Javascript
js实现百度登录框鼠标拖拽效果
Mar 07 Javascript
移动端触屏幻灯片图片切换插件idangerous swiper.js
Apr 10 Javascript
学习JS中的DOM节点以及操作
Apr 30 Javascript
vue二级菜单导航点击选中事件的方法
Sep 12 Javascript
在vue使用clipboard.js进行一键复制文本的实现示例
Jan 15 Javascript
生产制造追溯系统之再说条码打印
Jun 03 Javascript
iSlider手机端图片滑动切换插件使用详解
Dec 24 Javascript
Node.js API详解之 tty功能与用法实例分析
Apr 27 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 数字左侧自动补0
2008/03/31 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
PHP7+Nginx的配置与安装教程详解
2016/05/10 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
php生出随机字符串
2017/07/06 PHP
深入研究PHP中的preg_replace和代码执行
2018/08/15 PHP
toggle一个div显示或隐藏且可扩展成自定义下拉框
2013/09/12 Javascript
Jquery取得iframe下内容的方法
2013/11/18 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
javascript基于DOM实现权限选择实例分析
2015/05/14 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
js实现精确到秒的日期选择器完整实例
2016/04/30 Javascript
总结JavaScript三种数据存储方式之间的区别
2016/05/03 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
vue v-model动态生成详解
2018/06/30 Javascript
Vue中使用ElementUI使用第三方图标库iconfont的示例
2018/10/11 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
2018/10/25 Javascript
一百行JS代码实现一个校验工具
2019/04/30 Javascript
python实现搜索指定目录下文件及文件内搜索指定关键词的方法
2015/06/28 Python
Python正则表达式使用经典实例
2016/06/21 Python
python 以16进制打印输出的方法
2018/07/09 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
CSS3盒子模型详解
2013/04/24 HTML / CSS
HTML5添加禁止缩放功能
2017/11/03 HTML / CSS
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
Shein英国:女性时尚网上商店
2019/04/10 全球购物
国外的一些J2EE面试题一
2012/10/13 面试题
计算机网络专业自荐信
2014/07/04 职场文书
领导干部贪图享乐整改措施
2014/09/21 职场文书
见习报告的格式
2014/10/31 职场文书
义诊活动总结
2015/02/04 职场文书
库房管理员岗位职责
2015/02/12 职场文书
观看安全警示教育片心得体会
2016/01/15 职场文书