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 live
May 15 Javascript
js 禁用只读文本框获得焦点时的退格键
Apr 25 Javascript
script标签的 charset 属性使用说明
Dec 04 Javascript
js禁止页面使用右键(简单示例代码)
Nov 13 Javascript
JS调试必备的5个debug技巧
Mar 07 Javascript
Angularjs 实现一个幻灯片示例代码
Sep 08 Javascript
select下拉框插件jquery.editable-select详解
Jan 22 Javascript
详解angular2封装material2对话框组件
Mar 03 Javascript
js封装成插件_Canvas统计图插件编写实例
Sep 12 Javascript
jQuery EasyUI开发技巧总结
Sep 26 jQuery
JS实现键值对遍历json数组功能示例
May 30 Javascript
详解在React-Native中持久化redux数据
May 22 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
php5 图片验证码实现代码
2009/12/11 PHP
去掉destoon资讯内容页keywords关键字自带的文章标题的方法
2014/08/21 PHP
php把大写命名转换成下划线分割命名
2015/04/27 PHP
PHP常用技巧汇总
2016/03/04 PHP
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
vue中倒计时组件的实例代码
2018/07/06 Javascript
React styled-components设置组件属性的方法
2018/08/07 Javascript
vue中v-show和v-if的异同及v-show用法
2019/06/06 Javascript
js微信分享接口调用详解
2019/07/23 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
[34:41]夜魇凡尔赛茶话会 第二期02:你画我猜
2021/03/11 DOTA
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
在Python的while循环中使用else以及循环嵌套的用法
2015/10/14 Python
python与php实现分割文件代码
2017/03/06 Python
Python工程师面试必备25条知识点
2018/01/17 Python
python递归函数绘制分形树的方法
2018/06/22 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
Pandas之Fillna填充缺失数据的方法
2019/06/25 Python
python自动识别文本编码格式代码
2019/12/26 Python
Python安装tar.gz格式文件方法详解
2020/01/19 Python
实习生自我鉴定范文
2013/12/05 职场文书
护士见习期自我鉴定
2014/02/08 职场文书
王老吉广告词
2014/03/20 职场文书
捐款倡议书
2014/04/14 职场文书
小学语文课后反思精选
2014/04/25 职场文书
销售员岗位职责
2014/06/09 职场文书
计算机科学与技术专业求职信
2014/09/03 职场文书
幼儿园辞职信范文
2015/02/27 职场文书
教师旷工检讨书
2015/08/15 职场文书
2019职场单身人才调研报告:互联网行业单身比例最高
2019/08/07 职场文书
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
Python内置数据类型中的集合详解
2022/03/18 Python