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的匿名函数小结
Dec 31 Javascript
firebug的一个有趣现象介绍
Nov 30 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
Sep 21 Javascript
JavaScript函数学习总结以及相关的编程习惯指南
Nov 16 Javascript
[原创]JavaScript语法高亮插件highlight.js用法详解【附highlight.js本站下载】
Nov 01 Javascript
基本DOM节点操作
Jan 17 Javascript
微信小程序 支付功能开发错误总结
Feb 21 Javascript
vue复合组件实现注册表单功能
Nov 06 Javascript
微信小程序使用checkbox显示多项选择框功能【附源码下载】
Dec 11 Javascript
vue两个组件间值的传递或修改方式
Jul 04 Javascript
微信小程序实现通过双向滑动缩放图片大小的方法
Dec 30 Javascript
Element-UI中关于table表格的那些骚操作(小结)
Aug 15 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设计模式 Command(命令模式)
2011/06/26 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
PHP高并发和大流量解决方案整理
2021/03/09 PHP
JS中的public和private对象,即static修饰符
2012/01/18 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
jQuery scroll事件实现监控滚动条分页示例
2014/04/04 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
JavaScript实现简单的tab选项卡切换
2016/01/05 Javascript
JavaScript编写检测用户所使用的浏览器的代码示例
2016/05/05 Javascript
jQuery实现菜单栏导航效果
2017/08/15 jQuery
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
详解小程序用户登录状态检查与更新实例
2019/05/15 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
node.js使用fs读取文件出错的解决方案
2019/10/23 Javascript
Vue学习笔记之计算属性与侦听器用法
2019/12/07 Javascript
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
解决ant design vue 表格a-table二次封装,slots渲染的问题
2020/10/28 Javascript
vscode自定义vue模板的实现
2021/01/27 Vue.js
[03:24][TI9纪实] Dota奶爸
2019/08/22 DOTA
python中引用与复制用法实例分析
2015/06/04 Python
Python实现简单HTML表格解析的方法
2015/06/15 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
TensorFlow变量管理详解
2018/03/10 Python
Python实现按照指定要求逆序输出一个数字的方法
2018/04/19 Python
使用sklearn进行对数据标准化、归一化以及将数据还原的方法
2018/07/11 Python
python celery分布式任务队列的使用详解
2019/07/08 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
python爬虫中抓取指数的实例讲解
2020/12/01 Python
抽象方法、抽象类怎样声明
2014/10/25 面试题
优秀干部获奖感言
2014/01/31 职场文书
应届本科毕业生求职信
2014/07/23 职场文书
机关作风建设自查报告
2014/10/22 职场文书
2015年监理工作总结范文
2015/04/07 职场文书
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python