java 天气爬虫_spring Boot手把手教学(9): 实战练习-爬虫获取取天气信息并自动发邮件,出门不再忘记带伞...

本文将展示如何利用Spring Boot、Jsoup和定时任务实现天气爬虫,抓取天气信息并存储到MySQL,同时定时发送天气预报邮件。通过解析HTML获取天气数据,创建数据库表,使用代码生成器简化开发流程,最后实现定时发送邮件功能。
摘要由CSDN通过智能技术生成

1、前言❝ 前情回顾:

本篇文章,在前几篇文章的基础上,我们实战练习;❝ 使用的知识点为:

❞代码生成器,自动生成Controller、 Service、serviceImpl、entity、mapper和 mapper xml代码;

定时任务,定时获取最新天气数据和定时自动发送天气预报邮件

使用jsoup写爬虫爬取天气预报数据,并存入mysql;

2、安装依赖❝ pom.xml

org.jsoup

jsoup

1.10.3

org.springframework.boot

spring-boot-starter-mail

org.springframework.boot

spring-boot-starter-thymeleaf

ognl

ognl

3.2.14

使用 jsoup 爬取页面,并做HTML结构解析。

3、mysql数据库建表

/*

Navicat Premium Data Transfer

Source Server : local_mysql

Source Server Type : MySQL

Source Server Version : 80018

Source Host : localhost:3306

Source Schema : test

Target Server Type : MySQL

Target Server Version : 80018

File Encoding : 65001

Date: 19/06/2020 22:40:01

*/

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------

-- Table structure for weather

-- ----------------------------

DROP TABLE IF EXISTS `weather`;

CREATE TABLE `weather` (

`id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',

`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '名字',

`status` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '天气状态',

`date` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '当前日期',

`max` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '最高气温',

`min` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '最低气温',

`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',

PRIMARY KEY (`id`) USING BTREE,

UNIQUE KEY `date` (`date`) USING BTREE

) ENGINE=InnoDB AUTO_INCREMENT=1759 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;

SET FOREIGN_KEY_CHECKS = 1;

设置 id 为主键PRIMARY KEY,date 为唯一约束 UNIQUE KEY,这样的话,我每次定时爬取数据,存入数据库的时候,就能避免重复数据。

4、生成器生成代码

执行 com.scaffold.test.base.CodeGenerator中的 main 方法:

如果有同学对生成器不知道怎么配置的,请前往前面的文章看一下;❝ com.scaffold.test.entity.Weather:实体类

package com.scaffold.test.entity;

import com.baomidou.mybatisplus.annotation.IdType;

import com.baomidou.mybatisplus.annotation.TableId;

import lombok.Data;

import lombok.EqualsAndHashCode;

import java.io.Serializable;

import java.time.LocalDateTime;

/**

*

* 实体类

*

*

* @author alex wong

* @since 2020-06-18

*/

@Data

@EqualsAndHashCode(callSuper = false)

public class Weather implements Serializable {

private static final long serialVersionUID = 1L;

@TableId(value = "id", type = IdType.AUTO)

private Integer id;

private String name;

private String status;

private String date;

// 最高气温

private String max;

// 最低气温

private String min;

private LocalDateTime createTime;

}❝ com.scaffold.test.service.WeatherService: 服务类接口

package com.scaffold.test.service;

import com.baomidou.mybatisplus.extension.service.IService;

import com.scaffold.test.entity.Weather;

import org.jsoup.nodes.Document;

import java.util.List;

/**

*

* 服务类

*

*

* @author alex wong

* @since 2020-06-18

*/

public interface WeatherService extends IService {

}❝ com.scaffold.test.service.impl.WeatherServiceImpl: 服务实现类

package com.scaffold.test.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import com.scaffold.test.entity.Weather;

import com.scaffold.test.mapper.WeatherMapper;

import com.scaffold.test.service.WeatherService;

import org.jsoup.nodes.Document;

import org.jsoup.nodes.Element;

import org.jsoup.select.Elements;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.List;

/**

*

* 服务实现类

*

*

* @author alex wong

* @since 2020-06-18

*/

@Service

public class WeatherServiceImpl extends ServiceImpl implements WeatherService {

}❝ com.scaffold.test.mapper.WeatherMapper: Mapper 接口

package com.scaffold.test.mapper;

import com.scaffold.test.entity.Weather;</

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值