为什么80%的码农都做不了架构师?>>>   

`package com.soft.di.jsoup; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Map;

import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements;

/**

  • 全国省市县镇村数据爬取

  • @version 1.0.0 */ public class JsoupTest { private static Map<Integer, String> cssMap = new HashMap<Integer, String>(); private static BufferedWriter bufferedWriter = null;

    static { cssMap.put(1, "provincetr");// 省 cssMap.put(2, "citytr");// 市 cssMap.put(3, "countytr");// 县 cssMap.put(4, "towntr");// 镇 cssMap.put(5, "villagetr");// 村 }

    public static void main(String[] args) throws IOException { int level = 1;

     initFile();// 获取全国各个省级信息Document connect = connect("http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2013/");Elements rowProvince = connect.select("tr." + cssMap.get(level));for (Element provinceElement : rowProvince)// 遍历每一行的省份城市{Elements select = provinceElement.select("a");for (Element province : select)// 每一个省份(四川省){parseNextLevel(province, level + 1);}}closeStream();
    

    }

    private static void initFile() { try { bufferedWriter = new BufferedWriter(new FileWriter(new File("d:\CityInfo.txt"), true)); } catch (IOException e) { e.printStackTrace(); } }

    private static void closeStream() { if (bufferedWriter != null) { try { bufferedWriter.close(); } catch (IOException e) { e.printStackTrace(); } bufferedWriter = null; } }

    private static void parseNextLevel(Element parentElement, int level) throws IOException { try { Thread.sleep(500);//睡眠一下,否则可能出现各种错误状态码 } catch (InterruptedException e) { e.printStackTrace(); }

     Document doc = connect(parentElement.attr("abs:href"));if (doc != null){Elements newsHeadlines = doc.select("tr." + cssMap.get(level));//// 获取表格的一行数据for (Element element : newsHeadlines){printInfo(element, level + 1);Elements select = element.select("a");// 在递归调用的时候,这里是判断是否是村一级的数据,村一级的数据没有a标签if (select.size() != 0){parseNextLevel(select.last(), level + 1);}}}
    

    }

    /**

    • 写一行数据到数据文件中去
    • @param element 爬取到的数据元素
    • @param level 城市级别 */ private static void printInfo(Element element, int level) { try { bufferedWriter.write(element.select("td").last().text() + "{" + level + "}[" + element.select("td").first().text() + "]"); bufferedWriter.newLine(); bufferedWriter.flush(); } catch (IOException e) { e.printStackTrace(); } }

    private static Document connect(String url) { if (url == null || url.isEmpty()) { throw new IllegalArgumentException("The input url('" + url + "') is invalid!"); } try { return Jsoup.connect(url).timeout(100 * 1000).get(); } catch (IOException e) { e.printStackTrace(); return null; } } } `

转载于:https://my.oschina.net/di7633/blog/685727

Jsoup获取全国地区数据(省市县镇村)相关推荐

  1. java 省市县数据_使用Jsoup抓取全国地区数据(省市县镇村)

    最近手头在做一些东西,需要一个全国各地的地域数据,从省市区到县镇乡街道的.各种度娘,各种谷歌,都没找到一个完整的数据.最后功夫不负有心人,总算找到一份相对来说比较完整的数据,但是这里的数据也只是精确到 ...

  2. Java从高德地图获取全国地铁站数据

    Java从高德地图获取全国地铁站数据. 数据来源(高德地图):http://map.amap.com/subway/index.html?&4401 采集代码 /*** 从高德地图地铁线路同步 ...

  3. 2018省市县镇村5级行政区划sql

    在网上找了很多省市县镇村字典库,都不是最新的- 根据国家统计局 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/ 发布的2017年统计用区划和城乡划分 ...

  4. 全国地区数据表(绝对全)

    DROP TABLE IF EXISTS `core_area`; CREATE TABLE `core_area` (`code` varchar(12) NOT NULL DEFAULT '' C ...

  5. 太炫酷了|对全国大学数据进行可视化分析,看完后发现.....

    大家好,我是阿辰. 今天带大家来看一下全国所有大学的数据信息(包括专本科,覆盖全国),一共是获取到了全国31个省份,共2769所大学.先预览一下数据: 这里字段主要是包括了(省份.大学.类型.公或民办 ...

  6. mysql 省市县镇(乡)四级地区数据库

    发现你太可爱 2016-11-25 11:55 分享一个中国省市县镇(乡)四级地区数据库,不过数据量有点大,有45051条数据,体积1.64m,分享部分数据,有需要的可以单独联系. 分享一个三级地区的 ...

  7. 分析界面,在全国公共资源交易平台使用java获取全国的招投标数据接口

    任务:获取全国的建筑招投标数据信息,并打开界面获取详情页抓取html保存至本地. 打开网址地址,进行网页分析. 2.获取省市区联动,在控制台并没有发现任何往后台获取省市区联动的信息,怀疑是在js里写死 ...

  8. Echarts全国地区地图json获取(包含乡镇)

    一:各省各市区县地图获取 1. DATAV.GeoAtlas:是阿里推出的一个用于获取全国.各省.各市以及个县级市详细地图信息的json文件. http://datav.aliyun.com/tool ...

  9. 全国三级地区数据表设计

    全国三级地区数据表设计 最近因为工作需要,需要设计全国地区的三级联动,我也查了不少前端实现方式 不过都有些过时,一些地区的更新和变动后,这些实现方式并没跟着变动,所以我就上全国行政区划信息查询平台照着 ...

最新文章

  1. 页面可视化搭建工具前生今世
  2. Web开发需弄懂的知识点(.NET)
  3. Altair Compose 2020直装中文版
  4. mongodb导出查询结果
  5. 分布式ID-雪花算法
  6. input发送a.jax_Java EE 7 / JAX-RS 2.0:具有自定义HTTP标头的简单REST API身份验证和授权...
  7. 如何让body背景图自适应浏览器窗口大小
  8. 【POJ - 1995】Raising Modulo Numbers(裸的快速幂)
  9. 【转】功能测试的经验总结
  10. 妲己机器人怎么升级固件_台湾重金设计的3D妲己,亮瞎了
  11. 『飞秋』在ASP.NET服务器端过程中使用WebBrowser的注意事项
  12. 虚拟主机是设置在httpd-vhosts.conf还是vhosts.conf还是httpd.conf
  13. 数据结构之排序算法Java实现(2)——选择类排序之堆排序算法
  14. handler 和 intent用法
  15. delphi webservice 如何 共享 变量_医疗质量|如何实现非药物医嘱闭环管理?
  16. oracle 查询clob
  17. 八位颜色代码查询_浪琴八位编码
  18. Android -- 广播
  19. Ubuntu下Meshlab无法链接obj文件或者无法打开外挂硬盘的obj文件
  20. 基于极限学习机的预测、图像降噪和回归

热门文章

  1. 视频检测分割--Deep Feature Flow for Video Recognition
  2. LeetCode 595 Big Countries: SQL的题
  3. Linux: debian/ubuntu下安装Neo4j
  4. 使用poi读取公式错误,xlsx和xls在poi3.8后都支持公式读取,读取后有计算错误公式,解决方法
  5. 华为服务器修改SN,服务器渠道货SN配置
  6. 用虚拟机学linux,虚拟机上学习Linux运维?学linux有什么用
  7. java 班级号_Java 学校班级回忆录网站管理系统
  8. FMDatabaseQueue 数据库多线程操作、事务处理
  9. html大文件占用内存,[Flutter] 大文件上传之随传随处理(避免占用大量内存)
  10. linux 定时每天执行php,linux下使用cronjob定时执行php脚本