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 相关文章推荐
jquery1.4 教程二 ajax方法的改进
Feb 25 Javascript
JS中setInterval、setTimeout不能传递带参数的函数的解决方案
Apr 28 Javascript
js判断FCKeditor内容是否为空的两种形式
May 14 Javascript
jquery图片滚动放大代码分享(1)
Aug 25 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
Nov 26 Javascript
Node.js实现数据推送
Apr 14 Javascript
JavaScript 数组的深度复制解析
Nov 02 Javascript
vue实现简单实时汇率计算功能
Jan 15 Javascript
Bootstrap导航条学习使用(二)
Feb 08 Javascript
ajax接收后台数据在html页面显示
Feb 19 Javascript
Node.js+jade+mongodb+mongoose实现爬虫分离入库与生成静态文件的方法
Sep 20 Javascript
Vue 去除路径中的#号
Apr 19 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常用特殊运算符号和函数总结(php新手入门必看)
2013/02/02 PHP
单点登录 Ucenter示例分析
2013/10/29 PHP
php获取当前页面完整URL地址
2015/12/30 PHP
PHP微信公众号自动发送红包API
2016/06/01 PHP
php事件驱动化设计详解
2016/11/10 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
javascript之ESC(第二类混淆)
2007/05/06 Javascript
js特效,页面下雪的小例子
2013/06/17 Javascript
jquery 操作iframe的几种方法总结
2013/12/13 Javascript
JavaScript fontsize方法入门实例(按照指定的尺寸来显示字符串)
2014/10/17 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
浅谈js构造函数的方法与原型prototype
2016/07/04 Javascript
node+vue实现用户注册和头像上传的实例代码
2017/07/20 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
select获取下拉框的值 下拉框默认选中方法
2018/02/28 Javascript
Webstorm2016使用技巧(SVN插件使用)
2018/10/29 Javascript
es6数值的扩展方法
2019/03/11 Javascript
Angular8 实现table表格表头固定效果
2020/01/03 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
如何通过JS实现日历简单算法
2020/10/14 Javascript
Python之日期与时间处理模块(date和datetime)
2017/02/16 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
python实现Flappy Bird源码
2018/12/24 Python
自学python的建议和周期预算
2019/01/30 Python
详解如何减少python内存的消耗
2019/08/09 Python
Python中bisect的使用方法
2019/12/31 Python
美国在线眼镜店:GlassesShop
2018/11/15 全球购物
C#可否对内存进行直接的操作
2015/02/26 面试题
实习心得体会
2014/01/02 职场文书
岳父生日宴会答谢词
2014/01/13 职场文书
公司经理聘任书
2014/03/29 职场文书
领导班子四风对照检查材料思想汇报
2014/09/26 职场文书
处级领导干部四风问题自我剖析材料
2014/09/29 职场文书
实习单位鉴定意见
2015/06/04 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书
纪检干部学习心得体会
2016/01/23 职场文书