形式像下面这样
String content = "";
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection) (new URL(url).openConnection());
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
String temp = null;
StringBuffer buffer = new StringBuffer();
while( (temp = reader.readLine()) != null){
buffer.append(temp);
}
content = buffer.toString();
} finally {
if (null != conn) conn.disconnect();
}
举例:
需要在Google地图中抓取上海东方明珠的地理坐标及其他信息,抓取的信息和Google地图中搜索"上海 东方明珠"的数据一样。
String url = 'http://ditu.google.cn/maps?f=q&hl=zh-CN&q=' + URLEncoder.encode("上海 东方明珠","UTF-8") + '&btnG=%E6%90%9C%E7%B4%A2%E5%9C%B0%E5%9B%BE&output=kml';
String content = "";
HttpURLConnection conn = null;
try {
conn = (HttpURLConnection) (new URL(url).openConnection());
BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
String temp = null;
StringBuffer buffer = new StringBuffer();
while( (temp = reader.readLine()) != null){
buffer.append(temp);
}
content = buffer.toString();
} finally {
if (null != conn) conn.disconnect();
}
/*
content 中存放以字符串形式的xml文档
假设content = "<?xml version="1.0" encoding="UTF-8"?><kml xmlns="http://earth.google.com/kml/2.0"><Folder><name>上海 东方明珠 (1 - 1)
<Placemark><name>上海市浦东新区东方明珠</name><Point><coordinates>13.22,16.5</coordinates><address>浦东新区陆家嘴
</address><Point><coordinates>121.499691,31.238893</coordinates></Point></address><Point><coordinates>116.480876,39.880054,0</coordinates></Po
int></Folder></kml>"
*/
解析出数据
java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("<Placemark><name>([^<]+)|<address>([^<]+)|<coordinates>([^<]+)");
Matcher m = pattern.matcher(content);
int idx = 0;
while(m.find()) {
switch(idx % 3) {
case 0: System.out.println("name:" + m.group(1));
break;
case 1: System.out.println("address:" + m.group(2));
break;
case 2: System.out.println("coordinates:" + m.group(3));
break;
}
}
本文介绍了一种通过Java代码从Google地图抓取特定地点详细信息的方法,包括名称、地址及地理坐标等,并提供了完整的示例代码。
1739

被折叠的 条评论
为什么被折叠?



