如何从网站的html代码获取特定行

时间:2019-05-22 13:24:12

标签: java

我正在尝试获取用户输入城市的纬度和经度值(在Java中) 我找到了提供此服务的网站(geonames.org) 我只想从搜索的html中提取经纬度。 例如,如果我使用网址 || https://www.geonames.org/search.html?q=[CITYNAME]&country=|| ,坐标就这样存储(通过使用inspect元素): N 38°53'42'' 宽77°2'10'' (华盛顿的纬度和时间) (使用的网址-https://www.geonames.org/search.html?q=washington&country=) 我将如何搜索这些特定的行,然后提取long和lat?

1 个答案:

答案 0 :(得分:0)

您可以使用其rest api而不是解析HTML。 还要注意,对于一个城市和国家,您将收到多个记录。

import com.squareup.okhttp.*;
import org.json.*;
public class GeoLookup {
public static void main(String[] args) throws Exception {
    OkHttpClient client = new OkHttpClient();

    Request request = new Request.Builder()
            .url("http://api.geonames.org/search?name_equals=San%20Jose&country=US&maxRows=10&username=demo&type=json")
            .build();
    Response response = client.newCall(request).execute();
    String responseString = response.body().string();


    JSONObject obj = new JSONObject(responseString);
    JSONArray arr = obj.getJSONArray("geonames");
    for (int i = 0; i < arr.length(); i++)
    {
        System.out.println(arr.getJSONObject(i).getString("toponymName"));
        System.out.println(arr.getJSONObject(i).getString("lat"));
        System.out.println(arr.getJSONObject(i).getString("lng"));
    }
  }
 }

这是您需要的依赖项: okhttp-2.7.5.jar,okio-1.6.0.jar,org.json.jar