使用Jsoup爬虫获取统计局全国地区信息 import java.io.IOException;import org.jsoup.Jsoup;import org.jsoup.nodes.Document;import org.jsoup.nodes.Element;import org.jsoup.select.Elements;/** * @author Karle * @date 2017年11月24日
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
* @author Karle
* @date 2017年11月24日
* @博客 http://csdn.karle.vip/
*/
public class RegionJsoup {
private static final String URL = "http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201703/t20170310_1471429.html";
private static final String CITY_SPACE = " ";
private static final String AREA_SPACE = " ";
public static void main(String[] args) {
try {
Document document = Jsoup.connect(URL).get();
System.out.println("********" + document.title() + "********");
// 地区数据主容器
Element trsPreAppend = document.getElementsByClass("TRS_PreAppend").get(0);
// 地区列表
Elements msoNormalList = trsPreAppend.getElementsByClass("MsoNormal");
String regionId = null;
String regionName = null;
// 初始城市前缀
String cityPrefix = "666";
boolean city = false;
boolean area = false;
for (Element msoNormalItem : msoNormalList) {
String showInfo = null;
Elements msoNormalB = msoNormalItem.getElementsByTag("b");
Elements msoNormalSpan = msoNormalItem.getElementsByTag("span");
if (msoNormalB != null && msoNormalB.size() != 0) {
if (msoNormalB.size() == 2) {
// 省份
regionId = msoNormalB.get(0).getElementsByTag("span").get(0).text();
regionName = msoNormalB.get(1).getElementsByTag("span").get(0).text();
} else {
// 省份
regionId = msoNormalSpan.get(0).text();
regionName = msoNormalB.get(0).getElementsByTag("span").get(0).text();
}
city = false;
area = false;
} else {
// 市、区县
regionId = msoNormalSpan.get(1).text();
regionName = msoNormalSpan.get(3).text();
city = false;
area = true;
// 切换市区处理
if (!regionId.startsWith(cityPrefix)) {
cityPrefix = regionId.substring(0, 4);
city = true;
area = false;
}
}
// 去空格
showInfo = (regionId + "——" + regionName).replaceAll("[ , ,\\s+]", "");
if (city) {
// 城市
showInfo = CITY_SPACE + showInfo;
}
if (area) {
// 区,县
showInfo = AREA_SPACE + showInfo;
}
System.out.println(showInfo);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
