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 相关文章推荐
Extjs学习笔记之八 继承和事件基础
Jan 08 Javascript
document.all的一个比较完整的总结及案例
Jan 31 Javascript
js实现点击链接后延迟3秒再跳转的方法
Jun 05 Javascript
详解JavaScript逻辑And运算符
Dec 04 Javascript
JavaScript检查子字符串是否在字符串中的方法
Feb 03 Javascript
jQuery使用cookie与json简单实现购物车功能
Apr 15 Javascript
详解JavaScript模块化开发
Dec 04 Javascript
Node.js学习入门
Jan 03 Javascript
微信小程序 页面传值详解
Mar 10 Javascript
jQuery选择器中的特殊符号处理方法
Sep 08 jQuery
vue3.0中的双向数据绑定方法及优缺点
Aug 01 Javascript
vue基于Teleport实现Modal组件
May 31 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
自动跳转中英文页面
2006/10/09 PHP
WML,Apache,和 PHP 的介绍
2006/10/09 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
js中访问html中iframe的文档对象的代码[IE6,IE7,IE8,FF]
2011/01/08 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
window.print打印指定div指定网页指定区域的方法
2014/08/04 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
javascript常用函数(2)
2015/11/05 Javascript
js拖拽的原型声明和用法总结
2016/04/04 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
2016/05/03 Javascript
JavaScript判断数组是否存在key的简单实例
2016/08/03 Javascript
input 禁止输入特殊字符的四种实现方式
2016/08/24 Javascript
详解Angular.js指令中scope类型的几种特殊情况
2017/02/21 Javascript
详解Javascript几种跨域方式总结
2017/02/27 Javascript
Webpack 之 babel-loader文件预处理器详解
2018/03/23 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
原生js实现拖拽移动与缩放效果
2020/08/24 Javascript
详解Swift中属性的声明与作用
2016/06/30 Python
Django框架模板的使用方法示例
2019/05/25 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
安装docker-compose的两种最简方法
2019/07/30 Python
python打包成so文件过程解析
2019/09/28 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
Django3中的自定义用户模型实例详解
2020/08/23 Python
matplotlib之pyplot模块之标题(title()和suptitle())
2021/02/22 Python
CSS3 选择器 属性选择器介绍
2012/01/21 HTML / CSS
Urban Outfitters英国官网:美国平价服饰品牌
2016/11/25 全球购物
M.M.LaFleur官网:美国职业女装品牌
2020/10/27 全球购物
办公自动化毕业生求职信
2014/03/09 职场文书
应届生求职信范文
2014/05/26 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
Java实现多文件上传功能
2021/06/30 Java/Android
webpack的移动端适配方案小结
2021/07/25 Javascript
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript