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 相关文章推荐
基于jquery的滑动样例代码
Nov 20 Javascript
基于jquery循环map功能的代码
Feb 26 Javascript
jquery remove方法应用详解
Nov 22 Javascript
js通过location.search来获取页面传来的参数
Sep 11 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
Sep 19 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
May 17 Javascript
JS实现的幻灯片切换显示效果
Sep 07 Javascript
canvas 弹幕效果(实例分享)
Jan 11 Javascript
基于vue.js实现侧边菜单栏
Mar 20 Javascript
浅谈struts1 & jquery form 文件异步上传
May 25 jQuery
详解ECMAScript typeof用法
Jul 25 Javascript
解决vue的变量在settimeout内部效果失效的问题
Aug 30 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如何将图片文件上传到另外一台服务器上
2019/08/26 PHP
extjs grid取到数据而不显示的解决
2008/12/29 Javascript
用js实现in_array的方法
2013/11/05 Javascript
Jquery实现Div上下移动示例
2014/04/23 Javascript
JQuery中的html()、text()、val()区别示例介绍
2014/09/01 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
跟我学习javascript的执行上下文
2015/11/18 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
javascript三种代码注释方法
2016/06/02 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
jQuery UI结合Ajax创建可定制的Web界面
2016/06/22 Javascript
从零开始学习Node.js系列教程四:多页面实现数学运算的client端和server端示例
2017/04/13 Javascript
理解nodejs的stream和pipe机制的原理和实现
2017/08/12 NodeJs
jQuery实现可兼容IE6的淡入淡出效果告警提示功能示例
2017/09/20 jQuery
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
JS实现随机抽选获奖者
2019/11/07 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
微信小程序实现拨打电话功能的示例代码
2020/06/28 Javascript
Python操作SQLite简明教程
2014/07/10 Python
python 队列详解及实例代码
2016/10/18 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
python模拟表单提交登录图书馆
2018/04/27 Python
python 调用钉钉机器人的方法
2019/02/20 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
Python如何向SQLServer存储二进制图片
2020/06/08 Python
利用python对mysql表做全局模糊搜索并分页实例
2020/07/12 Python
波兰灯具、照明和LED购物网站:Lampy.pl
2019/03/11 全球购物
有机婴儿毛毯和衣服:Monica + Andy
2020/03/01 全球购物
超市实习总结自我鉴定
2013/09/19 职场文书
市场专员岗位职责
2014/02/14 职场文书
标准化管理实施方案
2014/02/25 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
自强自立美德少年事迹材料
2014/08/16 职场文书
教师三严三实心得体会
2014/10/11 职场文书
2014年大学宣传部工作总结
2014/12/19 职场文书