SpringBoot集成Jsoup爬虫

爬取三级行政区域划分,三级列表,存入数据库中


前言

爬取获取三级行政区域划分,三级列表,根据三级划分将区域代码和城市存入数据库中


提示:以下是本篇文章正文内容,下面案例可供参考

一、爬虫是什么?

网络爬虫为一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。
将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索。

二、使用步骤

1.引入库

代码如下(示例):


import crawl.JdbcUtil;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

2.爬虫过程

代码如下(示例):

    String result = "";String charset = "UTF-8";try {URL url = new URL(strUrl);InputStream inputStream = url.openStream();InputStreamReader inputStreamReader = new InputStreamReader(inputStream, Charset.forName(charset));BufferedReader bufferedReader = new BufferedReader(inputStreamReader);String s;StringBuffer stringBuffer = new StringBuffer();while ((s = bufferedReader.readLine()) != null) {stringBuffer.append(s);}result = stringBuffer.toString();} catch (Exception e) {System.out.println("错误信息");e.printStackTrace();}return result;
}
    Document document = Jsoup.parse(content);Elements element = document.select("table").select("tr");// 记录省String province = "";// 记录市String city = "";// 记录编码String code = "";String[] dataArr = new String[5];boolean flag = false;for (int i = 0; i < element.size(); i++) {String str = element.get(i).text();if (flag == true) {break;}dataArr = str.split(" ");// 从省开始判断if (i < 3) {continue;}code = dataArr[0];if (code.endsWith("0000")) {// 省province = str;Map<String, List<String>> cityMap = new HashMap<>();countryMap.put(str, cityMap);} else if(code.endsWith("00") && !code.endsWith("0000")) {// 市city = str;Map<String, List<String>> cityMap = countryMap.get(province);cityMap.put(str, new ArrayList<String>());} else {// 区// 取出市Map<String, List<String>> cityMap = countryMap.get(province);// 取出区List<String> classifyList = cityMap.get(city);// 如果classify为null,没有走市的if判断,这是一个直辖市if (classifyList == null) {// 市为空,将北京省当做市classifyList = new ArrayList<>();cityMap.put(city, classifyList);city = province;}classifyList.add(str);}if (str.startsWith("820000")) {flag = true;}}

总结

知识点,基本类型和包装类型的值传递和引用传递。List,Map是引用传递,在别处进行add或者put,Map和List中的数据都将跟着变。

SpringBoot集成Jsoup爬虫——三级列表相关推荐

  1. SpringBoot集成jsoup多线程爬取美剧天堂全部电影资源

    SpringBoot集成jsoup爬取美剧天堂全部美剧资源 准备工作 这次我的目的是获取这个网站的所有美剧的信息和迅雷的BT地址,我们需要获取的信息都在上万个类似于下面个页面结构的页面上 确定了目标, ...

  2. ElasticSearch(五)SpringBoot+ES+Jsoup实现JD(京东)搜索

    标题SpringBoot+ES+Jsoup实现JD搜索 文章目录 标题SpringBoot+ES+Jsoup实现JD搜索 1.功能概述 2.工具简介 3.操作步骤 4.总结 项目效果 1.功能概述 ​ ...

  3. Windows下安装Mongodb SpringBoot集成MongoDB和Redis多数据源

    全文内容: Mongodb安装 说明:Mongodb和redis是开发中常用的中间件,Redis的安装使用比较简单就不写了,只说本地也就是Windows安装Mongodb. SpringBoot集成M ...

  4. SpringBoot笔记:SpringBoot集成MinIO分布式文件系统

    文章目录 搭建MinIO集群 SpringBoot集成 添加依赖 添加配置 获取MinioClient MinioUtils完整工具类 测试代码 搭建MinIO集群 首先搭建MinIO的分布式集群,集 ...

  5. 九、SpringBoot集成Thymeleaf模板引擎

    Thymeleaf咋读!??? 呵呵,是不是一脸懵逼...哥用我的大学四级英文知识告诉你吧:[θaimlif]. 啥玩意?不会音标?...那你就这样叫它吧:"赛母李府",大部分中国 ...

  6. springboot md5加密_SpringSecurity入门-SpringBoot集成SpringSecurity

    前言 至今Java能够如此的火爆Spring做出了很大的贡献,它的出现让Java程序的编写更为简单灵活,而Spring如今也形成了自己的生态圈,今天咱们探讨的是Spring旗下的一个款认证工具:Spr ...

  7. 后端:SpringBoot集成Swagger-Bootstrap-UI,界面美观!

    SpringBoot集成Swagger-Bootstrap-UI,界面美观.下面给大家介绍一下! 该开源项目GitHub地址: https://github.com/xiaoymin/Swagger- ...

  8. SpringBoot集成Actuator端点配置

    1.说明 Actuator端点可以监控应用程序并与之交互. Spring Boot包括许多内置的端点, 比如health端点提供基本的应用程序运行状况信息, 并允许添加自定义端点. 可以控制每个单独的 ...

  9. Java使用Springboot集成Es官方推荐(RestHighLevelClient)

    SpringBoot集成ElasticSearch的四种方式(主要讲解ES官方推荐方式) TransportClient:这种方式即将弃用 官方将在8.0版本彻底去除 Data-Es:Spring提供 ...

  10. jsoup爬虫简书首页数据做个小Demo

    代码地址如下: http://www.demodashi.com/demo/11643.html 昨天LZ去面试,遇到一个大牛,被血虐一番,发现自己基础还是很薄弱,对java一些原理掌握的还是不够稳固 ...

最新文章

  1. [BZOJ3631][JLOI2014]松鼠的新家
  2. 3142:[HNOI2013]数列 - BZOJ
  3. JZOJ 5923. 【NOIP2018模拟10.23】Bomb
  4. Angular自定义structural指令的实例化过程以及set方法的调用
  5. 基与datatable的分页
  6. java遍历Set集合
  7. 为什么服务器要选择 Linux,这里总结了 10 大理由
  8. 计算机教授丁三石,一次难忘的计算机课!!
  9. vscode 暂停运行_用VS Code开发STM32(三)——调试
  10. 深入理解java虚拟机【内存溢出实例】
  11. 夺命雷公狗---无限级分类NO2
  12. 【博客目录】成为一个优秀的数据工程师
  13. pcb外观维修_5种最常见的PCB维修
  14. 赛马问题--最全面的解析
  15. MongoDB课堂笔记
  16. java基于springboot+vue校园车辆管理系统
  17. WORD 毕设页眉页码目录标题 排版
  18. 在V2EX的开发环境里尝试了一下OneAPM @livid
  19. 论文阅读:CNN+GCN
  20. python3设置编码格式_python3编码调整

热门文章

  1. LitePal简单用法
  2. 迅雷老版本总是提示升级,怎样关闭?
  3. win10字体大小_暴露年龄警告!Win10干掉了多少装机必备?
  4. jquery 时间选择插件-jedate
  5. 【免费模版分享】任务管理移动端Axure原型模板
  6. 唐宇迪opencv-背景建模
  7. 对WORD文档的关键字搜索
  8. Mac Book Pro桌面隐藏文件
  9. Verilog学习笔记 (四)QPSK调制实现
  10. cadence的PCB封装库导入Altium designer