package cn.com.crawler.utils;import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Url {/*** 获得网页信息*/public static String getWebContext(String domain) {// System.out.println("开始读取内容...("+domain+")");StringBuffer sb = new StringBuffer();BufferedReader in = null;try {java.net.URL url = new java.net.URL(domain);in = new BufferedReader(new InputStreamReader(url.openStream()));String line;while ((line = in.readLine()) != null) {sb.append(line);}//System.out.println(sb.toString());} catch (Exception e) { // Report any errors that arisee.printStackTrace();}finally{if(in != null){try {in.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}return sb.toString();}
}
package cn.com.crawler.type;import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import cn.com.crawler.utils.Url;/*** 城市信息解析*/
public class CityCrawler {private static final ExecutorService cachedThreadPool = Executors.newCachedThreadPool();private static class GetCityThread implements Runnable{private String province;private List<String> citys;private String context;private CountDownLatch latch;GetCityThread(String context, String province, List<String> citys, CountDownLatch latch){this.context = context;this.province = province;this.citys = citys;this.latch = latch;}@Overridepublic void run() {Pattern cityP = Pattern.compile("((?=" + province + ")((?!市)[^<])*(?=市))");Matcher matcher = cityP.matcher(context);while(matcher.find()){String city = matcher.group();city = city + "市";if(!citys.contains(city)){citys.add(city);}}latch.countDown();}}private static String start(String url){Map<String, List<String>> cityMap = new HashMap<>();cityMap.put("北京市", new ArrayList<String>());cityMap.put("天津市", new ArrayList<String>());cityMap.put("河北省", new ArrayList<String>());cityMap.put("山西省", new ArrayList<String>());cityMap.put("内蒙", new ArrayList<String>());cityMap.put("辽宁省", new ArrayList<String>());cityMap.put("吉林省", new ArrayList<String>());cityMap.put("黑龙江省", new ArrayList<String>());cityMap.put("上海市", new ArrayList<String>());cityMap.put("江苏省", new ArrayList<String>());cityMap.put("安徽省", new ArrayList<String>());cityMap.put("福建省", new ArrayList<String>());cityMap.put("江西省", new ArrayList<String>());cityMap.put("山东省", new ArrayList<String>());cityMap.put("河南省", new ArrayList<String>());cityMap.put("湖北省", new ArrayList<String>());cityMap.put("湖南省", new ArrayList<String>());cityMap.put("广东省", new ArrayList<String>());cityMap.put("广西", new ArrayList<String>());cityMap.put("海南省", new ArrayList<String>());cityMap.put("重庆市", new ArrayList<String>());cityMap.put("四川省", new ArrayList<String>());cityMap.put("贵州省", new ArrayList<String>());cityMap.put("云南省", new ArrayList<String>());cityMap.put("陕西省", new ArrayList<String>());cityMap.put("甘肃省", new ArrayList<String>());cityMap.put("青海省", new ArrayList<String>());cityMap.put("宁夏", new ArrayList<String>());cityMap.put("新疆", new ArrayList<String>());//获取所有的省份String context = Url.getWebContext(url);Iterator<String> it = cityMap.keySet().iterator();//创建一个闭锁线程int size = cityMap.keySet().size();CountDownLatch latch = new CountDownLatch(size);//遍历省份while(it.hasNext()){String province = it.next();List<String> values = cityMap.get(province);cachedThreadPool.execute(new GetCityThread(context, province, values, latch));}try {latch.await();} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}it = cityMap.keySet().iterator();while(it.hasNext()){String province = it.next();List<String> values = cityMap.get(province);System.out.println(province + "→" + values);}//使用cityMap生成文件System.out.println("任务完成!");return context;}//开始运行爬虫任务public static void start(){cachedThreadPool.execute(new Runnable() {@Overridepublic void run() {// TODO Auto-generated method stubstart("http://data.acmr.com.cn/member/city/city_md.asp");}});}}

程序开始运行

package cn.com.crawler;import cn.com.crawler.type.CityCrawler;public class Main {public static void main(String[] args) {CityCrawler.start();}
}

运行结果:

新疆→[新疆乌鲁木齐市, 新疆克拉玛依市, 新疆吐鲁番市, 新疆哈密市, 新疆昌吉市, 新疆阜康市, 新疆米泉市, 新疆博乐市, 新疆库尔勒市, 新疆阿克苏市, 新疆阿图什市, 新疆喀什市, 新疆和田市, 新疆奎屯市, 新疆伊宁市, 新疆塔城市, 新疆乌苏市, 新疆阿勒泰市]

广东省→[广东省广州市, 广东省深圳市, 广东省汕头市, 广东省湛江市, 广东省韶关市, 广东省珠海市, 广东省佛山市, 广东省江门市, 广东省茂名市, 广东省肇庆市, 广东省惠州市, 广东省梅州市, 广东省阳江市, 广东省东莞市, 广东省中山市, 广东省潮州市, 广东省汕尾市, 广东省河源市, 广东省清远市, 广东省揭阳市, 广东省云浮市, 广东省番禺市, 广东省花都市, 广东省增城市, 广东省从化市, 广东省乐昌市, 广东省南雄市, 广东省潮阳市, 广东省澄海市, 广东省顺德市, 广东省南海市, 广东省三水市, 广东省高明市, 广东省台山市, 广东省新会市, 广东省开平市, 广东省鹤山市, 广东省恩平市, 广东省廉江市, 广东省雷州市, 广东省吴川市, 广东省高州市, 广东省化州市, 广东省信宜市, 广东省高要市, 广东省四会市, 广东省惠阳市, 广东省兴宁市, 广东省陆丰市, 广东省阳春市, 广东省英德市, 广东省连州市, 广东省普宁市, 广东省罗定市]

陕西省→[陕西省西安市, 陕西省铜川市, 陕西省宝鸡市, 陕西省咸阳市, 陕西省汉中市, 陕西省渭南市, 陕西省延安市, 陕西省榆林市, 陕西省兴平市, 陕西省韩城市, 陕西省华阴市, 陕西省安康市, 陕西省商州市]

河南省→[河南省郑州市, 河南省开封市, 河南省洛阳市, 河南省平顶山市, 河南省安阳市, 河南省新乡市, 河南省焦作市, 河南省鹤壁市, 河南省濮阳市, 河南省许昌市, 河南省漯河市, 河南省南阳市, 河南省商丘市, 河南省三门峡市, 河南省信阳市, 河南省巩义市, 河南省荥阳市, 河南省新密市, 河南省新郑市, 河南省登封市, 河南省偃师市, 河南省舞钢市, 河南省汝州市, 河南省林州市, 河南省卫辉市, 河南省辉县市, 河南省济源市, 河南省沁阳市, 河南省孟州市, 河南省禹州市, 河南省长葛市, 河南省义马市, 河南省灵宝市, 河南省邓州市, 河南省永城市, 河南省周口市, 河南省项城市, 河南省驻马店市]

江西省→[江西省南昌市, 江西省景德镇市, 江西省萍乡市, 江西省九江市, 江西省新余市, 江西省鹰潭市, 江西省赣州市, 江西省乐平市, 江西省瑞昌市, 江西省贵溪市, 江西省瑞金市, 江西省南康市, 江西省宜春市, 江西省丰城市, 江西省樟树市, 江西省高安市, 江西省上饶市, 江西省德兴市, 江西省吉安市, 江西省井冈山市, 江西省临川市]

海南省→[海南省海口市, 海南省三亚市, 海南省通什市, 海南省琼海市, 海南省儋州市, 海南省琼山市, 海南省文昌市, 海南省万宁市, 海南省东方市]

广西→[广西南宁市, 广西柳州市, 广西桂林市, 广西梧州市, 广西贵港市, 广西北海市, 广西防城港市, 广西钦州市, 广西玉林市, 广西岑溪市, 广西东兴市, 广西桂平市, 广西北流市, 广西凭祥市, 广西合山市, 广西贺州市, 广西百色市, 广西河池市, 广西宜州市]

上海市→[上海市]

吉林省→[吉林省长春市, 吉林省吉林市, 吉林省四平市, 吉林省辽源市, 吉林省通化市, 吉林省白山市, 吉林省松原市, 吉林省白城市, 吉林省九台市, 吉林省榆树市, 吉林省德惠市, 吉林省蛟河市, 吉林省桦甸市, 吉林省舒兰市, 吉林省磐石市, 吉林省公主岭市, 吉林省双辽市, 吉林省梅河口市, 吉林省集安市, 吉林省临江市, 吉林省洮南市, 吉林省大安市, 吉林省延吉市, 吉林省图们市, 吉林省敦化市, 吉林省珲春市, 吉林省龙井市, 吉林省和龙市]

宁夏→[宁夏银川市, 宁夏石嘴山市, 宁夏吴忠市, 宁夏青铜峡市, 宁夏灵武市]

安徽省→[安徽省合肥市, 安徽省淮南市, 安徽省淮北市, 安徽省芜湖市, 安徽省蚌埠市, 安徽省马鞍山市, 安徽省铜陵市, 安徽省安庆市, 安徽省阜阳市, 安徽省黄山市, 安徽省滁州市, 安徽省宿州市, 安徽省巢湖市, 安徽省六安市, 安徽省桐城市, 安徽省天长市, 安徽省明光市, 安徽省亳州市, 安徽省界首市, 安徽省宣州市, 安徽省宁国市, 安徽省贵池市]

河北省→[河北省石家庄市, 河北省唐山市, 河北省邯郸市, 河北省保定市, 河北省张家口市, 河北省秦皇岛市, 河北省邢台市, 河北省承德市, 河北省沧州市, 河北省廊坊市, 河北省衡水市, 河北省辛集市, 河北省藁城市, 河北省晋州市, 河北省新乐市, 河北省鹿泉市, 河北省遵化市, 河北省丰南市, 河北省迁安市, 河北省武安市, 河北省南宫市, 河北省沙河市, 河北省涿州市, 河北省定州市, 河北省安国市, 河北省高碑店市, 河北省泊头市, 河北省任丘市, 河北省黄骅市, 河北省河间市, 河北省霸州市, 河北省三河市, 河北省冀州市, 河北省深州市]

天津市→[天津市]

重庆市→[重庆市]

甘肃省→[甘肃省兰州市, 甘肃省白银市, 甘肃省天水市, 甘肃省嘉峪关市, 甘肃省金昌市, 甘肃省玉门市, 甘肃省酒泉市, 甘肃省敦煌市, 甘肃省张掖市, 甘肃省武威市, 甘肃省平凉市, 甘肃省西峰市, 甘肃省临夏市, 甘肃省合作市]

山西省→[山西省太原市, 山西省大同市, 山西省阳泉市, 山西省长治市, 山西省晋城市, 山西省朔州市, 山西省古交市, 山西省潞城市, 山西省高平市, 山西省忻州市, 山西省原平市, 山西省孝义市, 山西省离石市, 山西省汾阳市, 山西省榆次市, 山西省介休市, 山西省临汾市, 山西省侯马市, 山西省霍州市, 山西省运城市, 山西省永济市, 山西省河津市]

江苏省→[江苏省南京市, 江苏省徐州市, 江苏省无锡市, 江苏省常州市, 江苏省苏州市, 江苏省南通市, 江苏省连云港市, 江苏省淮阴市, 江苏省盐城市, 江苏省扬州市, 江苏省镇江市, 江苏省泰州市, 江苏省宿迁市, 江苏省江阴市, 江苏省宜兴市, 江苏省锡山市, 江苏省新沂市, 江苏省邳州市, 江苏省溧阳市, 江苏省金坛市, 江苏省武进市, 江苏省常熟市, 江苏省张家港市, 江苏省昆山市, 江苏省吴江市, 江苏省太仓市, 江苏省吴县市, 江苏省启东市, 江苏省如皋市, 江苏省通州市, 江苏省海门市, 江苏省淮安市, 江苏省东台市, 江苏省大丰市, 江苏省仪征市, 江苏省高邮市, 江苏省江都市, 江苏省丹阳市, 江苏省扬中市, 江苏省句容市, 江苏省兴化市, 江苏省靖江市, 江苏省泰兴市, 江苏省姜堰市]

四川省→[四川省成都市, 四川省自贡市, 四川省攀枝花市, 四川省泸州市, 四川省德阳市, 四川省绵阳市, 四川省广元市, 四川省遂宁市, 四川省内江市, 四川省乐山市, 四川省南充市, 四川省宜宾市, 四川省达州市, 四川省都江堰市, 四川省彭州市, 四川省邛崃市, 四川省崇州市, 四川省广汉市, 四川省什邡市, 四川省绵竹市, 四川省江油市, 四川省峨眉山市, 四川省阆中市, 四川省华蓥市, 四川省万源市, 四川省雅安市, 四川省西昌市, 四川省巴中市, 四川省资阳市, 四川省简阳市, 四川省广安市]

福建省→[福建省福州市, 福建省厦门市, 福建省泉州市, 福建省漳州市, 福建省南平市, 福建省龙岩市, 福建省莆田市, 福建省三明市, 福建省福清市, 福建省长乐市, 福建省永安市, 福建省石狮市, 福建省晋江市, 福建省南安市, 福建省龙海市, 福建省邵武市, 福建省武夷山市, 福建省建瓯市, 福建省建阳市, 福建省漳平市, 福建省宁德市, 福建省福安市, 福建省福鼎市]

内蒙→[内蒙包头市, 内蒙呼和浩特市, 内蒙乌海市, 内蒙赤峰市, 内蒙通辽市, 内蒙霍林郭勒市, 内蒙海拉尔市, 内蒙满洲里市, 内蒙扎兰屯市, 内蒙牙克石市, 内蒙根河市, 内蒙额尔古纳市, 内蒙乌兰浩特市, 内蒙二连浩特市, 内蒙锡林浩特市, 内蒙集宁市, 内蒙丰镇市, 内蒙东胜市, 内蒙临河市]

湖南省→[湖南省长沙市, 湖南省株洲市, 湖南省湘潭市, 湖南省衡阳市, 湖南省邵阳市, 湖南省岳阳市, 湖南省常德市, 湖南省益阳市, 湖南省郴州市, 湖南省永州市, 湖南省怀化市, 湖南省张家界市, 湖南省娄底市, 湖南省浏阳市, 湖南省醴陵市, 湖南省湘乡市, 湖南省韶山市, 湖南省耒阳市, 湖南省常宁市, 湖南省武冈市, 湖南省汩罗市, 湖南省临湘市, 湖南省津市, 湖南省沅江市, 湖南省资兴市, 湖南省洪江市, 湖南省冷水江市, 湖南省涟源市, 湖南省吉首市]

贵州省→[贵州省贵阳市, 贵州省六盘水市, 贵州省遵义市, 贵州省清镇市, 贵州省赤水市, 贵州省仁怀市, 贵州省铜仁市, 贵州省兴义市, 贵州省毕节市, 贵州省安顺市, 贵州省凯里市, 贵州省都匀市, 贵州省福泉市]

辽宁省→[辽宁省沈阳市, 辽宁省大连市, 辽宁省鞍山市, 辽宁省抚顺市, 辽宁省本溪市, 辽宁省丹东市, 辽宁省锦州市, 辽宁省阜新市, 辽宁省辽阳市, 辽宁省营口市, 辽宁省盘锦市, 辽宁省铁岭市, 辽宁省朝阳市, 辽宁省葫芦岛市, 辽宁省新民市, 辽宁省瓦房店市, 辽宁省普兰店市, 辽宁省庄河市, 辽宁省海城市, 辽宁省东港市, 辽宁省凤城市, 辽宁省凌海市, 辽宁省北宁市, 辽宁省盖州市, 辽宁省大石桥市, 辽宁省灯塔市, 辽宁省铁法市, 辽宁省开原市, 辽宁省北票市, 辽宁省凌源市, 辽宁省兴城市]

山东省→[山东省济南市, 山东省青岛市, 山东省淄博市, 山东省枣庄市, 山东省烟台市, 山东省潍坊市, 山东省泰安市, 山东省临沂市, 山东省东营市, 山东省济宁市, 山东省威海市, 山东省日照市, 山东省莱芜市, 山东省德州市, 山东省聊城市, 山东省章丘市, 山东省胶州市, 山东省即墨市, 山东省平度市, 山东省胶南市, 山东省莱西市, 山东省滕州市, 山东省龙口市, 山东省莱阳市, 山东省莱州市, 山东省蓬莱市, 山东省招远市, 山东省栖霞市, 山东省海阳市, 山东省青州市, 山东省诸城市, 山东省寿光市, 山东省安丘市, 山东省高密市, 山东省昌邑市, 山东省曲阜市, 山东省兖州市, 山东省邹城市, 山东省新泰市, 山东省肥城市, 山东省文登市, 山东省荣成市, 山东省乳山市, 山东省乐陵市, 山东省禹城市, 山东省临清市, 山东省滨州市, 山东省菏泽市]

北京市→[北京市]

湖北省→[湖北省武汉市, 湖北省黄石市, 湖北省襄樊市, 湖北省荆州市, 湖北省十堰市, 湖北省宜昌市, 湖北省鄂州市, 湖北省荆门市, 湖北省孝感市, 湖北省黄冈市, 湖北省咸宁市, 湖北省大冶市, 湖北省丹江口市, 湖北省枝城市, 湖北省当阳市, 湖北省枝江市, 湖北省老河口市, 湖北省枣阳市, 湖北省宜城市, 湖北省钟祥市, 湖北省应城市, 湖北省安陆市, 湖北省广水市, 湖北省汉川市, 湖北省石首市, 湖北省洪湖市, 湖北省松滋市, 湖北省麻城市, 湖北省武穴市, 湖北省恩施市, 湖北省利川市, 湖北省随州市, 湖北省仙桃市, 湖北省潜江市, 湖北省天门市, 湖北省赤壁市]

黑龙江省→[黑龙江省哈尔滨市, 黑龙江省齐齐哈尔市, 黑龙江省鸡西市, 黑龙江省鹤岗市, 黑龙江省大庆市, 黑龙江省伊春市, 黑龙江省佳木斯市, 黑龙江省牡丹江市, 黑龙江省双鸭山市, 黑龙江省七台河市, 黑龙江省黑河市, 黑龙江省阿城市, 黑龙江省双城市, 黑龙江省尚志市, 黑龙江省五常市, 黑龙江省讷河市, 黑龙江省虎林市, 黑龙江省密山市, 黑龙江省铁力市, 黑龙江省同江市, 黑龙江省富锦市, 黑龙江省绥芬河市, 黑龙江省海林市, 黑龙江省宁安市, 黑龙江省穆棱市, 黑龙江省北安市, 黑龙江省五大连池市, 黑龙江省绥化市, 黑龙江省安达市, 黑龙江省肇东市, 黑龙江省海伦市]

云南省→[云南省昆明市, 云南省曲靖市, 云南省玉溪市, 云南省安宁市, 云南省宣威市, 云南省昭通市, 云南省楚雄市, 云南省个旧市, 云南省开远市, 云南省思茅市, 云南省景洪市, 云南省大理市, 云南省保山市, 云南省瑞丽市, 云南省潞西市]

青海省→[青海省西宁市, 青海省格尔木市, 青海省德令哈市]

任务完成!

java编写的获取中国所有城市名称的网络爬虫相关推荐

  1. iOS 自带定位CLLocationManager获取经纬度以及城市名称,并判断是否打开定位权限

    第一,我们要导入苹果自带的库 #import <MapKit/MapKit.h> 第二,我们要创建对象 @property (strong,nonatomic) CLLocationMan ...

  2. java使用siger 获取服务器硬件信息(CPU 内存 网络 io等)

    通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到j ...

  3. Java中怎么获取文件夹的名称_java获取文件夹下所有文件的名称

    <java获取文件夹下所有文件的名称>由会员分享,可在线阅读,更多相关<java获取文件夹下所有文件的名称(2页珍藏版)>请在人人文库网上搜索. 1.如果想要获得当前文件中的文 ...

  4. java通过反射获取类名、属性名称以及@Table注解上的表名称

    /*** 通过获取类上的@Table注解获取表名称** @param clazz* @return*/public static Map<String, String> getTableN ...

  5. Java入门学习-实践:手动输入城市名称5次,完成后输出一份city.txt文档,写出被输入最多次的城市名字

    一.初始版 import java.awt.MenuComponent; import java.io.File; import java.io.FileOutputStream; import ja ...

  6. java编写的获取抖音评论uid,小软件

    想起了一个故事,一个工程师给一个农场主修拖拉机,工程师在检查后,重新接了几根线就修好了.然后要价一万,农场主觉得要价太高,但是工程师回答说:接这几根线,只要10元,但是找到问题所在,值9990元.某些 ...

  7. java 获取服务器网络名_java-siger java使用siger 获取服务器硬件信息(CPU 内存 网络 io等) - 下载 - 搜珍网...

    java读取系统信息/ java读取系统信息/hyperic-sigar-1.6.4/ java读取系统信息/hyperic-sigar-1.6.4.zip java读取系统信息/hyperic-si ...

  8. 【网络爬虫】给关键字获取百度知道搜索数据的网络爬虫

    转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 简单的通过关键字,爬出百度知道的一些搜索数据. 例如:问题,提问时间:答案文本,答案 ...

  9. H5获取用户所在城市 网页获取用户城市名称

    获取用户城市名称,这里我是使用的百度地图JSAPI 2.0 文档链接 实现步骤: 1.在index.html中引用百度地图的js文件,如下:(需要使用自己的ak,获取方式:点击去官网申请ak) < ...

最新文章

  1. Redis基本数据类型1--String
  2. dnscat2搭建dns隧道
  3. jdbc获取一行字符串_JDBC基础
  4. [Redis6]新数据类型_Geospatial
  5. F. Ivan and Burgers(前缀线性基模板)
  6. 【POJ - 3304 】Segments(计算几何,思想转化,直线和线段相交)
  7. Hash表的扩容(转载)
  8. mysql循环更新_MySql多表循环遍历更新
  9. 在论坛中出现的比较难的sql问题:5(row_number函数 分页、随机返回数据)
  10. Kafka配置5--Windows下配置Kafka的集群+SASL+SSL
  11. 《薛兆丰的经济学课》课程总结5--需要协调
  12. C++类的常数据成员和常成员函数
  13. 蜘蛛和露珠的故事(得不到的和失去的)
  14. 腾讯技术分享:微信小程序音视频与WebRTC互通的技术思路和实践
  15. 计算机三级网络技术资料分享
  16. codeforce_div3_round527_ABCDEF
  17. 系统集成特一级资质标准
  18. HDU-#5037 Frog(贪心)
  19. 小程序支付 和 回调处理
  20. EA周报 |向李彦宏泼水男子寻衅滋事被行拘5日;iCloud 出现宕机,已修复;一线城市年均工资:北京领跑广深首入10万元俱乐部...

热门文章

  1. 基于深度学习和指代消解的中文人名识别
  2. 知识图谱的系统工程观(综述)
  3. 基于android开发共享停车位的设计与实现(含源码及毕业设计)
  4. 第一次的博客 告诫自己及目标
  5. css变成块级元素_设置标签的css样式代码为“display:block”,标签将变为块级元素。( )...
  6. 小黄鸭母公司在港招股书失效,留给德盈控股和许夏林的时间不多了
  7. 新拟态记账微信小程序网站H5,UI拟态记账
  8. html br 如何导出到excel,如何将页面的br/在Excel中正确换行
  9. 浙江大学竺可桢计算机专业,2018浙江大学竺可桢学院进行新生选拔面试
  10. 谈谈学习 --- 我认为的正确的学习姿势