使用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(); } } }