Jsoup获取全国地区数据(省市县镇村)
为什么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获取全国地区数据(省市县镇村)相关推荐
- java 省市县数据_使用Jsoup抓取全国地区数据(省市县镇村)
最近手头在做一些东西,需要一个全国各地的地域数据,从省市区到县镇乡街道的.各种度娘,各种谷歌,都没找到一个完整的数据.最后功夫不负有心人,总算找到一份相对来说比较完整的数据,但是这里的数据也只是精确到 ...
- Java从高德地图获取全国地铁站数据
Java从高德地图获取全国地铁站数据. 数据来源(高德地图):http://map.amap.com/subway/index.html?&4401 采集代码 /*** 从高德地图地铁线路同步 ...
- 2018省市县镇村5级行政区划sql
在网上找了很多省市县镇村字典库,都不是最新的- 根据国家统计局 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/ 发布的2017年统计用区划和城乡划分 ...
- 全国地区数据表(绝对全)
DROP TABLE IF EXISTS `core_area`; CREATE TABLE `core_area` (`code` varchar(12) NOT NULL DEFAULT '' C ...
- 太炫酷了|对全国大学数据进行可视化分析,看完后发现.....
大家好,我是阿辰. 今天带大家来看一下全国所有大学的数据信息(包括专本科,覆盖全国),一共是获取到了全国31个省份,共2769所大学.先预览一下数据: 这里字段主要是包括了(省份.大学.类型.公或民办 ...
- mysql 省市县镇(乡)四级地区数据库
发现你太可爱 2016-11-25 11:55 分享一个中国省市县镇(乡)四级地区数据库,不过数据量有点大,有45051条数据,体积1.64m,分享部分数据,有需要的可以单独联系. 分享一个三级地区的 ...
- 分析界面,在全国公共资源交易平台使用java获取全国的招投标数据接口
任务:获取全国的建筑招投标数据信息,并打开界面获取详情页抓取html保存至本地. 打开网址地址,进行网页分析. 2.获取省市区联动,在控制台并没有发现任何往后台获取省市区联动的信息,怀疑是在js里写死 ...
- Echarts全国地区地图json获取(包含乡镇)
一:各省各市区县地图获取 1. DATAV.GeoAtlas:是阿里推出的一个用于获取全国.各省.各市以及个县级市详细地图信息的json文件. http://datav.aliyun.com/tool ...
- 全国三级地区数据表设计
全国三级地区数据表设计 最近因为工作需要,需要设计全国地区的三级联动,我也查了不少前端实现方式 不过都有些过时,一些地区的更新和变动后,这些实现方式并没跟着变动,所以我就上全国行政区划信息查询平台照着 ...
最新文章
- 页面可视化搭建工具前生今世
- Web开发需弄懂的知识点(.NET)
- Altair Compose 2020直装中文版
- mongodb导出查询结果
- 分布式ID-雪花算法
- input发送a.jax_Java EE 7 / JAX-RS 2.0:具有自定义HTTP标头的简单REST API身份验证和授权...
- 如何让body背景图自适应浏览器窗口大小
- 【POJ - 1995】Raising Modulo Numbers(裸的快速幂)
- 【转】功能测试的经验总结
- 妲己机器人怎么升级固件_台湾重金设计的3D妲己,亮瞎了
- 『飞秋』在ASP.NET服务器端过程中使用WebBrowser的注意事项
- 虚拟主机是设置在httpd-vhosts.conf还是vhosts.conf还是httpd.conf
- 数据结构之排序算法Java实现(2)——选择类排序之堆排序算法
- handler 和 intent用法
- delphi webservice 如何 共享 变量_医疗质量|如何实现非药物医嘱闭环管理?
- oracle 查询clob
- 八位颜色代码查询_浪琴八位编码
- Android -- 广播
- Ubuntu下Meshlab无法链接obj文件或者无法打开外挂硬盘的obj文件
- 基于极限学习机的预测、图像降噪和回归
热门文章
- 视频检测分割--Deep Feature Flow for Video Recognition
- LeetCode 595 Big Countries: SQL的题
- Linux: debian/ubuntu下安装Neo4j
- 使用poi读取公式错误,xlsx和xls在poi3.8后都支持公式读取,读取后有计算错误公式,解决方法
- 华为服务器修改SN,服务器渠道货SN配置
- 用虚拟机学linux,虚拟机上学习Linux运维?学linux有什么用
- java 班级号_Java 学校班级回忆录网站管理系统
- FMDatabaseQueue 数据库多线程操作、事务处理
- html大文件占用内存,[Flutter] 大文件上传之随传随处理(避免占用大量内存)
- linux 定时每天执行php,linux下使用cronjob定时执行php脚本