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 相关文章推荐
个人总结的一些关于String、Function、Array的属性和用法
Jan 10 Javascript
JavaScript 获得选中文本内容的方法
Feb 15 Javascript
jquery 使用点滴函数代码
May 20 Javascript
读jQuery之十一 添加事件核心方法
Jul 31 Javascript
浅谈EasyUI中编辑treegrid的方法
Mar 01 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
Sep 15 Javascript
js事件处理程序跨浏览器解决方案
Mar 27 Javascript
JS作用域闭包、预解释和this关键字综合实例解析
Dec 16 Javascript
JS中如何轻松遍历对象属性的方式总结
Aug 06 Javascript
vue 对axios get pust put delete封装的实例代码
Jan 05 Javascript
在Vue中获取自定义属性方法:data-id的实例
Sep 09 Javascript
JavaScript使用canvas绘制坐标和线
Apr 28 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
中英文字符串翻转函数
2008/12/09 PHP
php实现mysql同步的实现方法
2009/10/21 PHP
基于Zend的Captcha机制的应用
2013/05/02 PHP
codeigniter框架批量插入数据
2014/01/09 PHP
浅析get与post的一些特殊情况
2014/07/28 PHP
PHP从FLV文件获取视频预览图的方法
2015/03/12 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
遍历echsop的region表形成缓存的程序实例代码
2016/11/01 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
详解jQuery插件开发中的extend方法
2013/11/19 Javascript
javascript从image转换为base64位编码的String
2014/07/29 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
JQuery中ajax方法访问web服务实例
2015/07/18 Javascript
详解JavaScript函数
2015/12/01 Javascript
微信小程序利用co处理异步流程的方法教程
2017/05/20 Javascript
微信小程序使用picker实现时间和日期选择框功能【附源码下载】
2017/12/11 Javascript
JS面试题大坑之隐式类型转换实例代码
2018/10/14 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
vue 避免变量赋值后双向绑定的操作
2020/11/07 Javascript
python re正则表达式模块(Regular Expression)
2014/07/16 Python
Python Django使用forms来实现评论功能
2016/08/17 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
Python编程实现使用线性回归预测数据
2017/12/07 Python
Python实现购物车程序
2018/04/16 Python
详解Python 协程的详细用法使用和例子
2018/06/15 Python
详解Python数据可视化编程 - 词云生成并保存(jieba+WordCloud)
2019/03/26 Python
python爬虫开发之Beautiful Soup模块从安装到详细使用方法与实例
2020/03/09 Python
jupyter notebook tensorflow打印device信息实例
2020/04/20 Python
python super()函数的基本使用
2020/09/10 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
中国入世承诺
2014/04/01 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
2015年学生资助工作总结
2015/05/25 职场文书
2015年高三教学工作总结
2015/07/21 职场文书
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers