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 String对象扩展HTML编码和解码的方法
Jun 02 Javascript
JavaScript 撑出页面文字换行
Jun 15 Javascript
实现只能输入数字的input不用replace方法
Sep 12 Javascript
8个超实用的jQuery功能代码分享
Jan 08 Javascript
JavaScript数据存储 Cookie篇
Jul 02 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
Aug 23 Javascript
JS简单实现移动端日历功能示例
Dec 28 Javascript
node.js平台下的mysql数据库配置及连接
Mar 31 Javascript
用angular实现多选按钮的全选与反选实例代码
May 23 Javascript
小程序实现列表多个批量倒计时
Jan 29 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
Nov 29 Javascript
微信小程序scroll-view的滚动条设置实现
Mar 02 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 什么是PEAR?(第二篇)
2009/03/19 PHP
PHP file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
PHP登录环节防止sql注入的方法浅析
2014/06/30 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
2016/07/18 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
TextArea设置MaxLength属性最大输入值的js代码
2012/12/21 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
node.js中的fs.write方法使用说明
2014/12/15 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
jQuery实现限制textarea文本框输入字符数量的方法
2015/05/28 Javascript
正则表达式优化JSON字符串的技巧
2015/12/24 Javascript
Jquery元素追加和删除的实现方法
2016/05/24 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
2016/06/17 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
JS简单实现数组去重的方法分析
2017/10/14 Javascript
Node.js模块全局安装路径配置方法
2018/05/17 Javascript
微信小程序网络层封装的实现(promise, 登录锁)
2019/05/08 Javascript
10种JavaScript最常见的错误(小结)
2019/06/21 Javascript
python登陆asp网站页面的实现代码
2015/01/14 Python
Django在win10下的安装并创建工程
2017/11/20 Python
Django 中间键和上下文处理器的使用
2019/03/17 Python
Python 实现数据结构-堆栈和队列的操作方法
2019/07/17 Python
python 字典 setdefault()和get()方法比较详解
2019/08/07 Python
Python turtle画图库&&画姓名实例
2020/01/19 Python
如何基于Python Matplotlib实现网格动画
2020/07/20 Python
HTML5新增的Css选择器、伪类介绍
2013/08/07 HTML / CSS
HTML5实现移动端弹幕动画效果
2019/08/01 HTML / CSS
GoPro摄像机美国官网:美国运动相机厂商
2018/07/03 全球购物
波兰最大的度假胜地和城市公寓租赁运营商:Sun & Snow
2018/10/18 全球购物
英国历史最悠久的DJ设备供应商:DJ Finance、DJ Warehouse、The DJ Shop
2019/09/04 全球购物
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
中专生自我鉴定范文
2013/12/19 职场文书
会计电算化个人求职信范文
2014/01/24 职场文书
职业生涯规划书前言
2014/04/15 职场文书
电工实训报告总结
2014/11/05 职场文书
委托开发合同书(标准版)
2019/08/07 职场文书