設計思想,首先調用百度地圖API查詢地名對應的經度和緯度,然后根據經度和緯度查詢所在省,市,縣
package com.lq; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.HashMap; import java.util.Map; import net.sf.json.JSONObject; public class Test { /** * 百度地圖通過經緯度來獲取地址,傳入參數緯度lat、經度lng * @param lat * @param lng * @return */ public static String getCity(String lat, String lng) { JSONObject obj = getLocationInfo(lat, lng).getJSONObject("result").getJSONObject("addressComponent"); String province,city,district; province=obj.getString("province"); city=obj.getString("city"); district=obj.getString("district"); if(province.equals(city)) { System.out.println(city+district); return city+district; } else { System.out.println(province+city+district); return province+city+district; } } public static JSONObject getLocationInfo(String lat, String lng) { String url = "http://api.map.baidu.com/reverse_geocoding/v3/?ak=ltGIgbvqAEeZFjyOhVFS0jVmE1HpRn9K" + "&output=json&coordtype=wgs84ll&location="+ lat + "," + lng ; JSONObject obj = JSONObject.fromObject(loadJSON(url)); return obj; } /** * 百度地圖通過地址來獲取經緯度,傳入參數address * @param address * @return */ public static Map<String,Double> getLngAndLat(String address) { Map<String,Double> map=new HashMap<String, Double>(); String url = "http://api.map.baidu.com/geocoding/v3/?address="+address+"&output=json&ak=ltGIgbvqAEeZFjyOhVFS0jVmE1HpRn9K" + "&coordtype=wgs84ll"; JSONObject obj = JSONObject.fromObject(loadJSON(url)); //System.out.println(obj); if(obj.get("status").toString().equals("0")) { double lng=obj.getJSONObject("result").getJSONObject("location").getDouble("lng"); double lat=obj.getJSONObject("result").getJSONObject("location").getDouble("lat"); map.put("lng", lng); map.put("lat", lat); System.out.println("經度:" + lng + "--- 緯度:" + lat); }else{ map.put("lng", 0.00); map.put("lat", 0.00); } return map; } public static String loadJSON (String url) { StringBuilder json = new StringBuilder(); try { URL oracle = new URL(url); URLConnection yc = oracle.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream())); String inputLine = null; while ( (inputLine = in.readLine()) != null) { json.append(inputLine); } in.close(); } catch (Exception e) { e.printStackTrace(); } return json.toString(); } public static void main(String[] args) { String area="北京市水科學技術研究院"; Map<String,Double> map=new HashMap<String, Double>(); map=getLngAndLat(area); String lat=""+map.get("lat"); String lng=""+map.get("lng"); getCity(lat, lng); } }
運行截圖:
python獲取本機的外網IP:
import requests import re def getIP(): headers = {} headers['User-Agent'] = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36" response = requests.get('http://txt.go.sohu.com/ip/soip',headers=headers) html = response.text reGET = re.compile(r'\d+.\d+.\d+.\d+.').findall(html) for i in reGET: print('外網地址: %s'%i) getIP()