java爬取深圳新房备案价

news2024/11/19 5:40:10

Java爬取深圳新房备案价

这是我做好效果,一共分3个页面
1、列表;2、统计;3、房源表

列表
在这里插入图片描述
价格分析页面
在这里插入图片描述
房源页面
在这里插入图片描述

一、如何爬取

第一步:获取深圳新房备案价

链接是:http://zjj.sz.gov.cn/ris/bol/szfdc/index.aspx
在这里插入图片描述

第二步:通过楼盘名查询获取明细

链接:http://zjj.sz.gov.cn:8004/

在这里插入图片描述
更多详情
在这里插入图片描述
获取到具体明细
在这里插入图片描述

数据库建立

爬取到的数据存放在mysql数据里面,建立自己新房价格数据。
第一个表:主列表设计 命名 t_fcProject
在这里插入图片描述
数据效果:
在这里插入图片描述
第二个表:楼栋 命名t_fcFloor

在这里插入图片描述
数据效果:
在这里插入图片描述
第三表:单元 命名:fcBranch

在这里插入图片描述
数据效果:
在这里插入图片描述
第四表:具体到房 命名:t_fcHouse
在这里插入图片描述
数据效果:
在这里插入图片描述
第五表:数据统计 命名:t_fcAnalyse

在这里插入图片描述
数据效果:
在这里插入图片描述

java代码

用到的是springboot,这里展示是service层

解析一下代码意思:
获取最新的时间,获取官网页面10条项目
日期相同则,比较取证号是否存在;日期不相同,比较是否在日期之前。

private List<FcProject> getListIndex() {
   
        //获取最新时间 从redis获取,获取不到从数据库获取
        Object o = redisUtil.get("checkFc");
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date d1 = new Date();
        if (o != null) {
   
            try {
   
                d1 = dateFormat.parse(o.toString());
            } catch (Exception e) {
   
                System.out.println("日期转化失败1");
            }
        } else {
   
            d1 = fcProjectMapper.queryNewDate();
            redisUtil.setValue("checkFc", dateFormat.format(d1));
        }
        //获取官方页面 最新10条
        String url = "http://zjj.sz.gov.cn/ris/bol/szfdc/index.aspx";
        Document doc = Jsoup.parse(httpsUtil.doGetHtml(url));
        Elements trs = doc.select("table").select("tr");

        List<FcProject> list = new ArrayList<>();
        for (int i = 1; i < trs.size() - 1; i++) {
   
            Elements tds = trs.get(i).select("td");
            //1-5 date 2023-11-24
            String dateStr = tds.get(5).text();
            //string => date
            Date d2 = null;
            try {
   
                d2 = dateFormat.parse(dateStr);
            } catch (Exception e) {
   
                System.out.println("日期转化失败2");
            }
            //日期相同则,比较取证号是否存在;日期不相同,比较是否在日期之前。
            if (d2 != null) {
   
                boolean isPass=false;
                //日期相同
                if (d2.equals(d1)) {
   
                    //判断取证号是否存在
                    isPass=fcProjectMapper.queryByProve(tds.get(1).text())==null;
                } else if (d2.after(d1)) {
   
                    //是否在日期之前
                    isPass=true;
                }

                if(isPass){
   
                    FcProject fcProject = new FcProject();
                    //1-1 prove
                    fcProject.setProve(tds.get(1).text());
                    //1-2 name
                    fcProject.setName(tds.get(2).text());
                    //1-4 region 龙岗
                    String region = tds.get(4).text();
                    fcProject.setRegion(regionStrToInt(region));
                    //日期
                    fcProject.setDate(d2);
                    ThrowException.illegal(fcProjectMapper.insertSelective(fcProject) < 1, "添加失败");
                    list.add(0, fcProject);
                }
            }
        }

        //删除redis日期
        if(!list.isEmpty()){
   
            redisUtil.del("checkFc");
        }
        return list;
    }

获取到有新项目之后,则有楼盘名称和取证号
通过楼盘名查询到具体地址,为了避免还用了取证号做一下对比,相同才取
把具体地址解析成 经纬度(在小程序就可以直接跳转地图形式做准备)
获取楼栋

private void handleAll(Integer id, String name, String prove) {
   
        //请求接口--查询项目
        Map<String, Object> mapProject = getProjectMap(

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1478818.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

就业班 2401--2.27 Linux Day6--管道和重定向

管道与重定向 只有在开水里&#xff0c;茶叶才能展开生命浓郁的香气. 一、重定向 标准输入、标准正确输出、标准错误输出 进程在运行的过程中根据需要会打开多个文件&#xff0c;每打开一个文件会有一个数字标识。这个标识叫文件描述符。 进程使用文件描述符来管理打开的文件…

Android PDFView 提示401 pom

背景 在开发安卓app&#xff0c;使用PDF组件来解析URL地址 &#xff0c;从github找到一个开源组件 AndroidPdfViewer 遇到一个大坑&#xff0c;一直提示下载依赖401 pom 打开控制台链接弹出需要登录jitpack 原因分析&#xff1a; 这个组件项目依赖库链接到了需要鉴权的…

【airtest】自动化入门教程(一)AirtestIDE

目录 一、下载与安装 1、下载 2、安装 3、打开软件 二、web自动化配置 1、配置chrome浏览器 2、窗口勾选selenium window 三、新建项目&#xff08;web&#xff09; 1、新建一个Airtest项目 2、初始化代码 3、打开一个网页 四、恢复默认布局 五、新建项目&#xf…

服务器数据恢复-服务器RAID5上层XFS文件系统分区数据恢复案例

服务器数据恢复环境&#xff1a; MD1200磁盘柜中的磁盘通过RAID卡创建了一组RAID5阵列&#xff0c;分配了一个LUN。在Linux操作系统层面对该LUN进行了分区&#xff0c;划分sdc1和sdc2两个分区&#xff0c;通过LVM扩容的方式将sdc1分区加入到了root_lv中&#xff1b;sdc2分区格式…

VuePress + GitHub 搭建个人博客踩坑记录

最近想给我教练搭个网站,本来选的是 VuePress 框架,也折腾完了,起码是搭建出来了,踩的坑也都总结好了 但是最近发现了一个更简洁的模板: VuePress-theme-hope ,所以最终网站使用的样式是这个 不过我觉得这里面踩坑的记录应该还是有些价值的,分享出来,看看能不能帮到一些小伙伴~…

手机AI摄影时代开启,传音引领行业标准化建设

今年春节&#xff0c;AI摄影可谓大出风头。人们在社交平台晒出自己在龙年的AI写真&#xff0c;极大地增添了节日的氛围感&#xff0c;也让我们看到了“AI摄影”的价值。新年伊始&#xff0c;手机巨头们纷纷布局该赛道&#xff0c;基于AI大模型实现的影像功能成为业界关注焦点。…

CAPL编程学习笔记--关于on 事件的详细解释

CAPL编程是比较有特色的一种面向通讯的编程语言。 1&#xff1a;on XXX类型&#xff08;即事件类型&#xff09; 维克多的官方文档对CAPL的描述是一门类C语言&#xff0c;说白了它也是用C写出来的。我们看on&#xff08;注意都是小写&#xff09;事件的代码结构 on * { }&…

算法day03_ 59.螺旋矩阵II

推荐阅读 算法day01_ 27. 移除元素、977.有序数组的平方 算法day02_209.长度最小的子数组 目录 推荐阅读59.螺旋矩阵 II题目思路解法 59.螺旋矩阵 II 题目 给你一个正整数 n &#xff0c;生成一个包含 1 到 n2 所有元素&#xff0c;且元素按顺时针顺序螺旋排列的 n x n 正方形…

2023年全国职业院校技能大赛中职组大数据应用与服务赛项题库参考答案陆续更新中,敬请期待…

2023年全国职业院校技能大赛中职组大数据应用与服务赛项题库参考答案陆续更新中&#xff0c;敬请期待… 武汉唯众智创科技有限公司 2024 年 2 月 联系人&#xff1a;辜渝傧13037102709 题号&#xff1a;试题01 模块三&#xff1a;业务分析与可视化 &#xff08;一&#xff0…

【Web安全靶场】sqli-labs-master 38-53 Stacked-Injections

sqli-labs-master 38-53 Stacked-Injections 其他关卡和靶场看专栏… 文章目录 sqli-labs-master 38-53 Stacked-Injections第三十八关-报错注入第三十九关-报错注入第四十关-盲注第四十一关-盲注第四十二关-联合报错双查询注入第四十三关-报错注入第四十四关-盲注第四十五关-…

Facebook的元宇宙实践:数字化社交的新前景

近年来&#xff0c;元宇宙&#xff08;Metaverse&#xff09;这一概念备受瞩目&#xff0c;被认为是数字化社交的未来趋势之一。而在众多科技巨头中&#xff0c;Facebook&#xff08;现更名为Meta&#xff09;一直处于元宇宙发展的前沿。在本文中&#xff0c;我们将深入探讨Fac…

linux系统Jenkins工具web配置

Jenkins工具配置 插件配置系统配置系统工具配置 插件配置 下载 Maven Integration Pipeline Maven lntegration gitlab Generic webhook Trigger nodejs Blue ocean系统配置 系统配置结束系统工具配置

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的水果质量识别系统(Python+PySide6界面+训练代码)

摘要&#xff1a;本篇博客详尽介绍了一套基于深度学习的水果质量识别系统及其实现代码。系统采用了尖端的YOLOv8算法&#xff0c;并与YOLOv7、YOLOv6、YOLOv5等前代算法进行了详细的性能对比分析&#xff0c;提供在识别图像、视频、实时视频流和批量文件中水果方面的高效准确性…

32单片机基础:TIM输出比较

这个输出比较功能是非常重要的&#xff0c;它主要是用来输出PWM波形,PWM波形又是驱动电机的必要条件&#xff0c;所以你如果想用STM32做一些有电机的项目&#xff0c;比如智能车&#xff0c;机器人等。 IC: Input Capture 输入捕获 CC:Capture/Compare一般表示输入捕获和输出…

【Leetcode每日一刷】哈希表|纲领、242.有效的字母异位词、349. 两个数组的交集

纲领 &#x1f517;代码随想录理论部分 关于哈希表这个数据结构就不再重复讲了&#xff0c;下面对几个关键点记录一下&#xff1a; 哈希碰撞 解决方法1&#xff1a;拉链法 解决方法2&#xff1a;线性探测法 下面针对做题要用到的三种结构讲一下&#xff08;也是重复造轮子了…

解释一下前端框架中的虚拟DOM(virtual DOM)和实际DOM(real DOM)之间的关系。

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…

windows server mysql 数据库停止 备份 恢复全流程操作方法

一,mysql备份 mysql最好是原工程文件备份.不需要sql查询的方式备份.安全高效. 比如,安装php与mysql组合后,我的mysql文件保存在: D:\phpstudy_pro\Extensions\MySQL5.7.26\data\dux 我只需要复制一份,保存起来就行. 二,mysql恢复 怎么恢复呢.我们一般是只恢复其中一个表,则找…

华为---RSTP(四)---RSTP的保护功能简介和示例配置

目录 1. 技术背景 2. RSTP的保护功能 3. BPDU保护机制原理和配置命令 3.1 BPDU保护机制原理 3.2 BPDU保护机制配置命令 3.3 BPDU保护机制配置步骤 4. 根保护机制原理和配置命令 4.1 根保护机制原理 4.2 根保护机制配置命令 4.3 根保护机制配置步骤 5. 环路保护机…

thefour--Love is like a tide

最后一部分了&#xff0c;要开始进行我们的训练了。 先上代码&#xff1a; import os import numpy as np from tqdm import tqdm import tensorflow as tf from thetwo import NeuralStyleTransferModel import theone import thethree #创建模型 modelNeuralStyleTransferM…

2.29IO进程线程

编写链表&#xff0c;链表里面随便搞点数据 使用 fprintf 将链表中所有的数据&#xff0c;保存到文件中 使用 fscanf 读取文件中的数据&#xff0c;写入链表中 #include <stdio.h> #include <string.h> #include <unistd.h> #include <stdlib.h>typed…