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学习笔记4 Eval函数
Jan 11 Javascript
Javascript表格翻页效果的具体实现
Oct 05 Javascript
jQuery函数map()和each()介绍及异同点分析
Nov 08 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
Dec 03 Javascript
jQuery中[attribute*=value]选择器用法实例
Dec 31 Javascript
JavaScript驾驭网页-CSS与DOM
Mar 24 Javascript
JavaScript 中对象的深拷贝
Dec 04 Javascript
Vue 2.x教程之基础API
Mar 06 Javascript
信息滚动效果的实例讲解
Sep 18 Javascript
如何使用50行javaScript代码实现简单版的call,apply,bind
Aug 14 Javascript
微信小程序仿今日头条导航栏滚动解析
Aug 20 Javascript
小程序实现录音上传功能
Nov 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
php下实现折线图效果的代码
2007/04/28 PHP
IStream与TStream之间的相互转换
2008/08/01 PHP
PHP读取汉字的点阵数据
2015/06/22 PHP
php中preg_match的isU代表什么意思
2015/10/01 PHP
PHP中include()与require()的区别说明
2017/02/14 PHP
JavaScript与DropDownList 区别分析
2010/01/01 Javascript
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
一个基于jquery的文本框记数器
2012/09/19 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
javascript结合ajax读取txt文件内容
2014/12/05 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
javascript实现确定和取消提示框效果
2015/07/10 Javascript
jQuery实现有动画淡出效果的二级折叠菜单代码
2015/10/17 Javascript
jQuery实现 上升、下降、删除、添加一行代码
2017/03/06 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
2017/03/27 jQuery
详解Node.js开发中的express-session
2017/05/19 Javascript
在原生不支持的旧环境中添加兼容的Object.keys实现方法
2017/09/11 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
JavaScript使用ul中li标签实现删除效果
2019/04/15 Javascript
微信打开网址添加在浏览器中打开提示的办法
2019/05/20 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
[33:19]完美世界DOTA2联赛PWL S2 PXG vs InkIce 第一场 11.26
2020/11/30 DOTA
Python使用新浪微博API发送微博的例子
2014/04/10 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
2018/02/18 Python
python 从文件夹抽取图片另存的方法
2018/12/04 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
使用CSS3在触屏上为按钮实现激活效果
2013/09/27 HTML / CSS
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
公司培训欢迎词
2014/01/10 职场文书
单方离婚协议书范本2014
2014/10/28 职场文书
2014年城市管理工作总结
2014/12/02 职场文书
七年级作文之冬景
2019/11/07 职场文书
python 网络编程要点总结
2021/06/18 Python