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 相关文章推荐
类似框架的js代码
Nov 09 Javascript
Bootstrap开发实战之响应式轮播图
Jun 02 Javascript
Javascript 函数的四种调用模式
Nov 05 Javascript
Bootstrap轮播图学习使用
Feb 10 Javascript
JS简单实现获取元素的封装操作示例
Apr 07 Javascript
使用jQuery实现简单的tab框实例
Aug 22 jQuery
分分钟学会vue中vuex的应用(入门教程)
Sep 14 Javascript
vue实现nav导航栏的方法
Dec 13 Javascript
Angular PWA使用的Demo示例
Jan 31 Javascript
angularjs请求数据的方法示例
Aug 06 Javascript
js实现点击生成随机div
Jan 16 Javascript
vue element ui validate 主动触发错误提示操作
Sep 21 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数据库密码的找回的步骤
2011/01/12 PHP
ini_set的用法介绍
2014/01/07 PHP
主流PHP框架的优缺点对比分析
2014/12/25 PHP
PHP中使用OpenSSL生成证书及加密解密
2017/02/05 PHP
php获取数据库中数据的实现方法
2017/06/01 PHP
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
为什么JS中eval处理JSON数据要加括号
2015/04/13 Javascript
JavaScript简单表格编辑功能实现方法
2015/04/16 Javascript
js调用百度地图及调用百度地图的搜索功能
2015/09/07 Javascript
jquery验证邮箱格式是否正确实例讲解
2015/11/16 Javascript
EasyUi combotree 实现动态加载树节点
2016/04/01 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
vue2.0+koa2+mongodb实现注册登录
2018/04/10 Javascript
webpack的 rquire.context用法实现工程自动化的方法
2020/02/07 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
单链表反转python实现代码示例
2018/02/08 Python
详解python while 函数及while和for的区别
2018/09/07 Python
Python 实现中值滤波、均值滤波的方法
2019/01/09 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
用pytorch的nn.Module构造简单全链接层实例
2020/01/14 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
Python面试题集
2012/03/08 面试题
英语专业学子个人的自我评价
2013/10/02 职场文书
中专生自荐信
2013/10/12 职场文书
上学迟到的检讨书
2014/01/11 职场文书
走进敬老院活动总结
2014/07/10 职场文书
法定代表人证明书
2014/11/28 职场文书
2015法院个人工作总结范文
2015/05/25 职场文书
安全教育观后感
2015/06/17 职场文书
大学生村官工作心得体会
2016/01/23 职场文书
心得体会格式及范文
2016/01/25 职场文书
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
java高级用法JNA强大的Memory和Pointer
2022/04/19 Java/Android