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中常用的55个经典技巧
Aug 12 Javascript
javascript比较文档位置
Apr 08 Javascript
jquery DOM操作 基于命令改变页面
May 06 Javascript
详解JavaScript中的4种类型识别方法
Sep 14 Javascript
JavaScript 封装一个tab效果源码分享
Sep 15 Javascript
基于JS实现checkbox全选功能实例代码
Oct 31 Javascript
JavaScript实现翻页功能(附效果图)
Feb 16 Javascript
jQuery获取单选按钮radio选中值与去除所有radio选中状态的方法
May 20 jQuery
bootstrap table sum总数量统计实现方法
Oct 29 Javascript
Angular模版驱动表单的使用总结
May 05 Javascript
validform表单验证的实现方法
Mar 08 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
Nov 02 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/05/15 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
php过滤输入操作之htmlentities与htmlspecialchars用法分析
2017/02/17 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
jquery 屏蔽一个区域内的所有元素,禁止输入
2009/10/22 Javascript
Javascript 键盘keyCode键码值表
2009/12/24 Javascript
JavaScript 异步方法队列链实现代码分析
2010/06/05 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
解读JavaScript中 For, While与递归的用法
2013/05/07 Javascript
深入理解javascript动态插入技术
2013/11/12 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
javascript高级选择器querySelector和querySelectorAll全面解析
2016/04/07 Javascript
JavaScript的React Web库的理念剖析及基础上手指南
2016/05/10 Javascript
Cookies 和 Session的详解及区别
2017/04/21 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
Vue2.0用户权限控制解决方案
2017/11/29 Javascript
解决Vue不能检测数组或对象变动的问题
2018/02/24 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
Vue.js 无限滚动列表性能优化方案
2019/12/02 Javascript
angular inputNumber指令输入框只能输入数字的实现
2019/12/03 Javascript
JS代码实现页面切换效果
2021/01/10 Javascript
[01:15:56]2018DOTA2亚洲邀请赛3月30日 小组赛A组 TNC VS Newbee
2018/03/31 DOTA
python对json的相关操作实例详解
2017/01/04 Python
Django 添加静态文件的两种实现方法(必看篇)
2017/07/14 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
利用python计算时间差(返回天数)
2019/09/07 Python
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
彪马美国官网:PUMA美国
2017/03/09 全球购物
服装设计专业自荐书范文
2013/12/30 职场文书
银行学习十八大感想
2014/01/11 职场文书
大学毕业感言200字
2014/03/09 职场文书
公司委托书范本5篇
2014/09/20 职场文书