用户登录
用户注册

分享至

Node.js爬虫如何获取天气和每日问候详解

  • 作者: 施主快躲开老衲要开枪了
  • 来源: 51数据库
  • 2021-08-16

安装依赖

安装node.js,同时安装好依赖:

npm install request --save // http请求库
npm install cheerio --save // 分析html工具
npm install express --save // nodejs web框架

获取墨迹天气

地址示例:

东莞 tianqi.moji.com/weather/chi…

广州 …

深圳 …

可打开墨迹天气网站找到女朋友对应城市修改url地址拼音即可。

查看网页结构:

下面开始提取网页天气信息:

const request = require("request")
const cheerio = require("cheerio")
const weatherurl = 'http://www.51sjk.com/Upload/Articles/1/0/268/268546_20210708023933019.jpg'

// 获取墨迹天气提示信息
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)
 	} 
 })
 }) 
}

获取每日一句

地址:

const greetingurl = 'http://www.51sjk.com/Upload/Articles/1/0/268/268546_20210708023933034.jpg'
// 获取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)
})

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。

软件
前端设计
程序设计
Java相关