当前位置 : 主页 > 编程语言 > java >

使用Jsoup爬虫获取统计局全国地区信息

来源:互联网 收集:自由互联 发布时间:2021-06-28
使用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日
使用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日
 * @博客 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();
		}
	}

}
网友评论