省市Java代码_全中国的省市县镇乡村数据获取以及展示java源代码

importjava.io.BufferedWriter;importjava.io.File;importjava.io.FileWriter;importjava.io.IOException;importjava.util.HashMap;importjava.util.Map;importorg.jsoup.Jsoup;importorg.jsoup.nodes.Document;importorg.jsoup.nodes.Element;importorg.jsoup.select.Elements;/*** 全国省市县镇村数据爬取

*@authorliushaofeng

* @date 2015-10-11 上午12:19:39

*@version1.0.0*/

public classJsoupTest

{private static Map cssMap = new HashMap();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) throwsIOException

{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 voidinitFile()

{try{

bufferedWriter= new BufferedWriter(new FileWriter(new File("d:\\CityInfo.txt"), true));

}catch(IOException e)

{

e.printStackTrace();

}

}private static voidcloseStream()

{if (bufferedWriter != null)

{try{

bufferedWriter.close();

}catch(IOException e)

{

e.printStackTrace();

}

bufferedWriter= null;

}

}private static void parseNextLevel(Element parentElement, int level) throwsIOException

{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);

}

}

}

}/*** 写一行数据到数据文件中去

*@paramelement 爬取到的数据元素

*@paramlevel 城市级别*/

private static void printInfo(Element element, intlevel)

{try{

bufferedWriter.write(element.select("td").last().text() + "{" + level + "}["

+ element.select("td").first().text() + "]");

bufferedWriter.newLine();

bufferedWriter.flush();

}catch(IOException e)

{

e.printStackTrace();

}

}private staticDocument 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;

}

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值