使用JAVA从网站页面中刮取“Elevation”的值

使用JAVA从网站页面中刮取“Elevation”的值,java,Java,我正在制作一个程序,从网页上获取高程值。网页地址为- 当我们打开上面的链接时,显示的网页是- {美国地质勘探局高程点查询服务:{高程查询{x:35.227085,y:-80.843123,数据来源:3DEP 1/3弧秒,高程:-1000000,单位:米} 我无法从网页上显示的数据打印仅高程值,即-1000000。我被要求用JAVA来做这件事。请帮忙。我是编程新手 我尝试了下面的代码。而是打印网页的全部内容。我只需要高程值 URL url; InputStream is = null;

我正在制作一个程序,从网页上获取高程值。网页地址为-

当我们打开上面的链接时,显示的网页是-

{美国地质勘探局高程点查询服务:{高程查询{x:35.227085,y:-80.843123,数据来源:3DEP 1/3弧秒,高程:-1000000,单位:米}

我无法从网页上显示的数据打印仅高程值,即-1000000。我被要求用JAVA来做这件事。请帮忙。我是编程新手

我尝试了下面的代码。而是打印网页的全部内容。我只需要高程值

URL url;
    InputStream is = null;
    BufferedReader br;
  

    try {
        url = new URL("https://nationalmap.gov/epqs/pqs.php?x=35.227085&y=-80.843124&units=Meters&output=json");
        is = url.openStream();  // throws an IOException
        br = new BufferedReader(new InputStreamReader(is));

     //  System.out.println (br.lines());
        while ((line = br.readLine()) != null) {
            System.out.println(line);    
        }
        
我只想要使用JAVA的提升值。

此URL包含json数据,因此您需要使用任何json框架,例如Jackson

首先,您必须定义返回消息的json模型:

public static class Model {
    @JsonProperty("USGS_Elevation_Point_Query_Service")
    private ElevationPointQuery elevationPointQuery;

    public static class ElevationPointQuery {
        @JsonProperty("Elevation_Query")
        private Data data;

        public static class Data {
            @JsonProperty
            private double x;
            @JsonProperty
            private double y;
            @JsonProperty("Data_Source")
            private String dataSource;
            @JsonProperty("Elevation")
            private String elevation;
            @JsonProperty("Units")
            private String units;
        }

    }
}
然后您必须定义方法,该方法从给定url读取json消息并返回模型:

private static <T> T readJsonByUrl(URL url, Class<T> cls) throws IOException {
    try (InputStream in = url.openStream()) {
        return new ObjectMapper().readerFor(cls).readValue(in);
    }
}
要使用Jackson,您必须添加以下依赖项:

compile 'com.fasterxml.jackson.core:jackson-core:2.9.8'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.8'
compile 'com.fasterxml.jackson.core:jackson-databind:2.9.8'

您是Java新手,但您试图使用Java执行web抓取?这与我的项目工作有关。我必须找到大量纬度和经度的高程值,并对这些高程值进行某种计算。我在JSON上做了大量搜索。我解决不了这个问题。我尝试将字符串行转换为字符数组,然后打印高程的特定值,但它给了我null异常错误。当我将代码放入eclipse时,可能会重复,它在ObjectMapper上显示错误。我该怎么办?你必须添加Jackson Dependencies我问了很多问题,先生,但是你能给我一个杰克逊依赖的链接吗。Baeldung提供的Jackson JSON教程-是否有任何类型的jar文件,我可以将其添加到eclipse中并运行代码。
compile 'com.fasterxml.jackson.core:jackson-core:2.9.8'
compile 'com.fasterxml.jackson.core:jackson-annotations:2.9.8'
compile 'com.fasterxml.jackson.core:jackson-databind:2.9.8'