`
yulon
  • 浏览: 117787 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java抓取京东省市区县数据

 
阅读更多

一般的系统都会有地区信息数据,如果要你一个个录取全国的地区信息,你可能会抓狂!下面的程序或许能帮到你:

public class AreaUtils {

	private final static Map<Integer,String> provinces=new HashMap<Integer,String>();
	
	static{
		provinces.put(1, "北京");
		provinces.put(2, "上海");
		provinces.put(3, "天津");
		provinces.put(4, "重庆");
		provinces.put(5, "河北");
		provinces.put(6, "山西");
		provinces.put(7, "河南");
		provinces.put(8, "辽宁");
		provinces.put(9, "吉林");
		provinces.put(10, "黑龙江");
		provinces.put(11, "内蒙古");
		provinces.put(12, "江苏");
		provinces.put(13, "山东");
		provinces.put(14, "安徽");
		provinces.put(15, "浙江");
		provinces.put(16, "福建");
		provinces.put(17, "湖北");
		provinces.put(18, "湖南");
		provinces.put(19, "广东");
		provinces.put(20, "广西");
		provinces.put(21, "江西");
		provinces.put(22, "四川");
		provinces.put(23, "海南");
		provinces.put(24, "贵州");
		provinces.put(25, "云南");
		provinces.put(26, "西藏");
		provinces.put(27, "陕西");
		provinces.put(28, "甘肃");
		provinces.put(29, "青海");
		provinces.put(30, "宁夏");
		provinces.put(31, "新疆");
		provinces.put(32, "台湾");
		provinces.put(42, "香港");
		provinces.put(43, "澳门");
		provinces.put(84, "钓鱼岛");
	}
	private static final String area_pattern="\\[.+?\\]";
	public static String areaUrl="http://passport.jd.com/emReg/AjaxService.aspx?action=GetAreas&level=[level]&parentId=[parentId]";
	/**
	 * 
	 * @author YLPan
	 * @date 2013-5-15
	 * @param level 1 获取市 2获取区县
	 * @param parentId
	 * @return
	 * @throws Exception
	 */
	public static List<Map<String,Object>> getAreas(Integer level,Integer parentId) throws Exception{
		String cityUrl=areaUrl.replaceAll("\\[level\\]",String.valueOf(level)).replaceAll("\\[parentId\\]", String.valueOf(parentId));
		System.out.println("cityUrl:"+cityUrl);
		String cityJson=NetTool.getTextContent(cityUrl, "gbk");
		Pattern pattern = Pattern.compile(area_pattern);
		Matcher matcher = pattern.matcher(cityJson);
		if(matcher.find()){
			cityJson=matcher.group();
			List<Map<String,Object>> cityList=JsonUtils.readJson2ListMap(cityJson);
			return cityList;
		}
		return null;
	}
	public static void areaInit() throws Exception{
		for(Entry<Integer,String> entry : provinces.entrySet()){
			System.out.println("province:"+entry.getValue());
				List<Map<String,Object>> cityList=getAreas(1,entry.getKey());
				if(cityList==null)continue;
				for(Map<String,Object> citymap : cityList){
					Integer cityId=(Integer)citymap.get("Id");
					String cityName=(String)citymap.get("Name");
					System.out.println("--cityName:"+cityName);
					List<Map<String,Object>> countyList=getAreas(2,cityId);
					if(countyList==null)continue;
						for(Map<String,Object> countyMap : countyList){
							Integer countyId=(Integer)countyMap.get("Id");
							String countyName=(String)countyMap.get("Name");
							System.out.println("----countyName:"+countyName);
					}
			}
		}
	}
	public static void main(String[] args) {
		try {
			areaInit();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 输出数据:

province:北京
cityUrl:http://passport.jd.com/emReg/AjaxService.aspx?action=GetAreas&level=1&parentId=1
--cityName:朝阳区
cityUrl:http://passport.jd.com/emReg/AjaxService.aspx?action=GetAreas&level=2&parentId=72
----countyName:三环以内
----countyName:三环到四环之间
----countyName:四环到五环之间
----countyName:五环到六环之间
----countyName:管庄
----countyName:北苑
----countyName:定福庄
--cityName:海淀区
cityUrl:http://passport.jd.com/emReg/AjaxService.aspx?action=GetAreas&level=2&parentId=2800
----countyName:三环以内
----countyName:三环到四环之间
----countyName:四环到五环之间
----countyName:五环到六环之间
----countyName:六环以外
----countyName:上地
----countyName:西三旗
----countyName:清河
----countyName:圆明园西路
----countyName:农业大学西校区
----countyName:西二旗
........................................

 可能要浏览器是访问http://passport.jd.com/emReg/AjaxService.aspx?action=GetAreas&level=1&parentId=1,返回 的数据格式如下:

({"Areas":[{"Id":72,"Name":"朝阳区"},{"Id":2800,"Name":"海淀区"},{"Id":2801,"Name":"西城区"},{"Id":2802,"Name":"东城区"},{"Id":2803,"Name":"崇文区"},{"Id":2804,"Name":"宣武区"},{"Id":2805,"Name":"丰台区"},{"Id":2806,"Name":"石景山区"},{"Id":2807,"Name":"门头沟"},{"Id":2808,"Name":"房山区"},{"Id":2809,"Name":"通州区"},{"Id":2810,"Name":"大兴区"},{"Id":2812,"Name":"顺义区"},{"Id":2814,"Name":"怀柔区"},{"Id":2816,"Name":"密云区"},{"Id":2901,"Name":"昌平区"},{"Id":2953,"Name":"平谷区"},{"Id":3065,"Name":"延庆县"}]})

 说明:其他NetTool,JsonUtils是封装好的工具类,已上传

分享到:
评论

相关推荐

    java爬取京东数据

    Java爬取京东数据是一项涉及网络爬虫技术和Java编程语言的任务,主要目的是从京东网站上抓取所需的数据。在这个过程中,我们需要了解几个关键知识点: 1. **网络爬虫基础**:网络爬虫是一种自动提取网页信息的程序...

    Java抓取https网页数据

    Java抓取https网页数据,解决peer not authenticated异常。导入eclipse就能运行,带有所用的jar包(commons-httpclient-3.1.jar,commons-logging.jar,httpclient-4.2.5.jar,httpcore-4.2.4.jar)

    Python抓取京东数据

    ### Python抓取京东数据知识点详解 #### 一、项目背景与目标 本项目旨在通过Python爬虫技术抓取京东网站的商品评论数据,并将其存储至MySQL数据库中,方便后续的数据分析和挖掘工作。该项目重点关注京东图书商品的...

    java抓取网站数据

    ### Java抓取网站数据知识点详解 #### 一、概述 在现代互联网开发中,抓取网站数据是一项重要的技能。无论是进行市场调研、竞品分析还是数据挖掘,掌握如何使用Java来抓取数据都是十分必要的。本篇文章将详细介绍...

    阿里专用-DataV.GeoAtlas全国GeoJSON省市区县json数据(子域、不含子域).rar

    4. 国内省市区县数据:数据覆盖了中国的所有省份、城市、区县,但不含更细化的子域(如乡镇、街道)。 5. 数据更新:数据截止到2020年8月19日,需要定期更新以保持时效性。 这些数据可以用于各种用途,如地图绘制、...

    Java抓取网页数据Demo

    本文将详细讨论如何使用Java语言来抓取网页数据,包括两种主要方法:直接抓取原网页内容和处理网页中的JavaScript返回数据。 首先,让我们探讨**抓取原网页**的方法。在Java中,我们可以使用`java.net.URL`类来建立...

    java网页抓取数据

    Java网页抓取数据是互联网数据挖掘的一个重要领域,它允许开发者通过编程方式获取网页上的信息,从而实现自动化分析、监控或构建智能应用。在Java中,我们通常使用HTTP客户端库和HTML解析工具来实现这一目标。本文将...

    java抓取网页数据

    在“java抓取网页数据”这个主题中,我们将深入探讨如何利用Java来抓取并处理互联网上的信息。 首先,我们要了解什么是网络爬虫。网络爬虫(Web Crawler)是自动遍历互联网的程序,通过抓取网页内容并存储在本地,...

    省市区县三级联动数据.zip

    在IT行业中,"省市区县三级联动数据"通常是指一种用于构建地理信息选择功能的数据结构。这种功能常见于各类Web应用或移动应用中,比如地址填写、物流配送、数据分析等场景。用户在输入地址时,可以依次从省级、市级...

    c#抓取京东价格并解析json

    本教程主要聚焦于使用C#编程语言来抓取京东网站上的商品价格,并对抓取到的数据进行JSON格式的解析。这对于那些想要开发自己的京东价格监控系统或者进行电商数据分析的开发者来说非常有价值。 首先,我们需要了解C#...

    2017年全国省市区县乡镇地区数据mysql数据

    网上肯定看到很多的人在提供这个资源,也都是从国家统计抓取然后整理得出的,至于全与不全都是从国家统计局上面进行抓取的,更新时间是16年6月,17年的暂时在国家统计局官网没看到! 【特别提醒】:看别人那是看到是...

    利用python抓取京东手机销售数据

    爬取京东手机销售与评价数据,以excel表格形式存储,以条形图形式展示不同品牌手机在淘宝的评价人数。可以通过更改关键字手机实现对其他商品的爬取。详细介绍...

    京东商品数据抓取

    本项目是关于“京东商品数据抓取”的实现,虽然目前仅支持京东平台,但具备扩展到其他电商平台如淘宝、天猫、易迅等的潜力。下面将详细讲解这个项目的相关知识点。 1. **网络爬虫技术**:数据抓取的基础是网络爬虫...

    java抓取任何指定网页的数据

    ### Java抓取任何指定网页的数据 #### 知识点概览 本文主要介绍如何使用Java技术来抓取任何指定网页的数据。重点在于介绍抓取网页数据的方法、解析数据的手段,以及具体实施过程中的关键步骤。 #### 抓取网页数据...

    java爬虫抓取城市数据

    java爬虫抓取城市数据,数据抓取后直接持久化到数据库当中。博客地址http://blog.csdn.net/qq_23994787/article/details/78107890 如果没有积分的话,在主页给博主发邮件获取。

    Java网页抓取数据

    Java网页抓取数据是互联网开发中的一个重要技能,它允许开发者从网页中提取所需的信息,如新闻、产品数据或用户评论,以供进一步分析或利用。本主题主要涵盖以下几个关键知识点: 1. **网络请求库**:在Java中,...

    java 抓取微信公众号文章

    java抓取微信公众号最近10篇文章,基于微信搜狗搜索实现。java源码.git 仓库 http://git.oschina.net/hcxy/WechatSpider

    java无框架分布式爬虫,爬取范例:京东商品数据.zip

    爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL...

    京东爬虫,可抓取京东商品信息和评论

    京东爬虫是网络数据采集的一种常见应用场景,主要目的是获取京东平台上的商品信息和用户评论,以便进行数据分析、市场研究或构建个性化推荐系统。本项目基于Python的Scrapy框架实现,Scrapy是一个强大的、高效的Web...

    java网络爬虫抓取网页数据

    Java网络爬虫是一种自动化程序,用于从互联网上抓取大量数据。它的工作原理是模拟浏览器发送HTTP请求到服务器,接收响应,并解析返回的HTML或XML文档以提取所需信息。在这个过程中,HttpClient是一个常用的Java库,...

Global site tag (gtag.js) - Google Analytics