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

Jsoup可以从网站URL,文件或字符串中获取或解析HTML,提供完整的方法操作HTML元素,属性和文本。下面例子使用Jsoup获取统计局官网的全国地区统计信息

Jsoup GitHub:https://github.com/jhy/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();
        }
    }

}

部分地区信息输出(省级无缩进,城市缩进一格,区、县缩进两格)

110000——北京市
      110100——市辖区
            110101——东城区
            110102——西城区
            110105——朝阳区
            110106——丰台区
            110107——石景山区
            110108——海淀区
            110109——门头沟区
            110111——房山区
            110112——通州区
            110113——顺义区
            110114——昌平区
            110115——大兴区
            110116——怀柔区
            110117——平谷区
            110118——密云区
            110119——延庆区
120000——天津市
      120100——市辖区
            120101——和平区
            120102——河东区
            120103——河西区
            120104——南开区
            120105——河北区
            120106——红桥区
            120110——东丽区
            120111——西青区
            120112——津南区
            120113——北辰区
            120114——武清区
            120115——宝坻区
            120116——滨海新区
            120117——宁河区
            120118——静海区
            120119——蓟州区

省份:34个
城市:344个
区县:3130个

maven

<dependency>
    <groupId>org.jsoup</groupId>
    <artifactId>jsoup</artifactId>
    <version>1.8.3</version>
</dependency>

Jar下载:http://download.csdn.net/download/qq_19260029/10133736

推荐文章:
Eclipse新建Spring-boot项目,打包部署并输出HelloWord
【小项目】Spring boot基于Redis缓存商城分类,商品信息
Java基于Redis实现“附近的人”

猜你喜欢

转载自blog.csdn.net/qq_19260029/article/details/78640576