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.AutoComplete.js中文修正版(支持firefox)
Apr 09 Javascript
JavaScript去掉空格的方法集合
Dec 28 Javascript
浅谈关于JavaScript的语言特性分析
Apr 11 Javascript
使用js获取地址栏中传递的值
Jul 02 Javascript
js获取触发事件元素在整个网页中的绝对坐标(示例代码)
Dec 13 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
Jun 27 Javascript
JS实现多张图片预览同步上传功能
Jun 23 Javascript
推荐几个不错的console调试技巧实现
Dec 20 Javascript
Vue $emit()不能触发父组件方法的原因及解决
Jul 28 Javascript
JS实现拖动模糊框特效
Aug 25 Javascript
vue项目中js-cookie的使用存储token操作
Nov 13 Javascript
对vue生命周期的深入理解
Dec 03 Vue.js
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&MYSQL服务器配置说明
2006/10/09 PHP
解析php通过cookies获取远程网页的指定代码
2013/06/25 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
五个jQuery图片画廊插件 推荐
2011/05/12 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
JS字符串的切分用法实例
2016/02/22 Javascript
浅谈js中的in-for循环
2016/06/28 Javascript
Javascript 实现计算器时间功能详解及实例(二)
2017/01/08 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
Node.js Buffer模块功能及常用方法实例分析
2019/01/05 Javascript
小程序实现列表多个批量倒计时
2021/01/29 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
在react中使用vue的状态管理的方法示例
2020/05/02 Javascript
Vue组件跨层级获取组件操作
2020/07/27 Javascript
python解析基于xml格式的日志文件
2017/02/25 Python
python 实现倒排索引的方法
2018/12/25 Python
详解python数据结构和算法
2019/04/18 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
详解PyCharm安装MicroPython插件的教程
2019/06/24 Python
MNIST数据集转化为二维图片的实现示例
2020/01/10 Python
Python Flask框架实现简单加法工具过程解析
2020/06/03 Python
使用py-spy解决scrapy卡死的问题方法
2020/09/29 Python
来自世界上最好大学的在线课程:edX
2018/10/16 全球购物
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
校运会入场式解说词
2014/02/10 职场文书
物理系毕业生自荐书范文
2014/02/22 职场文书
四议两公开实施方案
2014/03/28 职场文书
承诺书范本
2015/01/21 职场文书
2015年幼儿园中班开学寄语
2015/05/27 职场文书
怎样写观后感
2015/06/19 职场文书
MySQL一些常用高级SQL语句
2021/07/03 MySQL