Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从以下URL获取一些数据?_Java_Android_Xml - Fatal编程技术网

Java 如何从以下URL获取一些数据?

Java 如何从以下URL获取一些数据?,java,android,xml,Java,Android,Xml,我想从以下网址获取一些数据,如sunriseTime、outTemp、Outside湿度等。如果你知道我如何做到这一点,请帮助我 URL 您需要执行以下操作: 打开URL 阅读网页的内容 创建要在数据中找到的模式 使用Regex(正则表达式)来匹配数据中需要的模式 我已经编写了一个Java程序来实现上述功能。希望有帮助:) 导入java.io.BufferedReader; 导入java.io.InputStreamReader; 导入java.net.URL; 导入java.net.URL

我想从以下网址获取一些数据,如sunriseTime、outTemp、Outside湿度等。如果你知道我如何做到这一点,请帮助我

URL
您需要执行以下操作:

  • 打开URL
  • 阅读网页的内容
  • 创建要在数据中找到的模式
  • 使用Regex(正则表达式)来匹配数据中需要的模式
我已经编写了一个Java程序来实现上述功能。希望有帮助:)

导入java.io.BufferedReader;
导入java.io.InputStreamReader;
导入java.net.URL;
导入java.net.URLConnection;
导入java.util.ArrayList;
导入java.util.array;
导入java.util.List;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
类URL读取器{
公共静态列表getAttributesFromURL(字符串urlString,
字符串[]键){
StringBuilder sb=新的StringBuilder();
试一试{
//打开URL
URL=新URL(URL字符串);
URLConnection URLConnection=url.openConnection();
BufferedReader BufferedReader=新的BufferedReader(
新的InputStreamReader(urlConnection.getInputStream());
//将URL内容读入StringBuilder对象
弦线;
而((line=bufferedReader.readLine())!=null){
sb.追加(第+行“\n”);
}
bufferedReader.close();
}捕获(例外e){
e、 printStackTrace();
}
//将StringBuilder内容复制到字符串中
字符串内容=sb.toString();
List keyList=Arrays.asList(键);
列表结果=新建ArrayList();
用于(字符串键:键列表){
//定义要在内容中找到的模式
字符串模式find=key+“=\”(.*)\”;
Pattern p=Pattern.compile(patternToFind);
匹配器m=p.Matcher(内容);
if(m.find()){
//如果找到模式,则将其存储在结果列表中
结果.添加(键+”:“+m.group(1.trim());
}
}
//返回结果
返回结果;
}
公共静态void main(字符串[]args)引发java.lang.Exception{
字符串URL字符串=”http://www.metar.gr/ws/alexan/ZWNTANA.htm";
//列出需要提取其值的所有键
字符串[]键={“日出时间”、“室外温度”、“室外湿度”};
//得到结果
List attributeValuePairs=getAttributesFromURL(URL字符串,键);
System.out.println(attributeValuePairs);
}
}
上述程序的输出将为:

[日出时间:6:14,室外温度:21.7,室外湿度:57]


您可以通过在程序的
数组中指定属性名称来获取所需的其他属性的值。

您研究过如何获取url后面的网站内容吗?是的,当然,但我无法从中找到数据,这就是我选择它的原因。如果您想查看该URL并给出一些解决方案,请执行以下操作:()这里也没有指向其他地方的链接。去那边,看看我想做什么,然后回来告诉我怎么做。请花一些时间阅读,特别是在这里发布下一个问题之前。祝你好运。我非常感谢你的回复,谢谢你。然而,因为我是这个网站的新手,更一般地说是编程领域的新手,我不知道你应该提到哪些问题,哪些不应该。另外,我不知道在特定情况下使用哪种代码,所以我用这种方式问我的问题。我使用了你的代码,它没有显示任何问题,但它不会向我返回任何信息。这是因为我刚刚将结果打印到控制台。如果您运行它,您可以在控制台上看到输出。你能告诉我你是从哪里运行这个程序的吗?在我用手机运行的Android Studio上,你检查控制台了吗?我可以更改程序以返回值的ArrayList。这会有帮助吗?我已更改程序以返回值的ArrayList。请立即运行并检查:)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;


class URLReader {

    public static List<String> getAttributesFromURL(String urlString, 
                                                    String [] keys) {
        StringBuilder sb = new StringBuilder();
        try {

            //Opening the URL
            URL url = new URL(urlString);
            URLConnection urlConnection = url.openConnection();
            BufferedReader bufferedReader = new BufferedReader(
                    new InputStreamReader(urlConnection.getInputStream()));

            // Reading the URL contents into a StringBuilder object
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                sb.append(line + "\n");
            }
            bufferedReader.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

        // Copying the StringBuilder contents into a string
        String contents = sb.toString();


        List<String> keyList = Arrays.asList(keys);
        List<String> result = new ArrayList<String>();
        for (String key : keyList) {

            // Defining the pattern to be found in contents
            String patternToFind = key + "=\"(.*)\"";
            Pattern p = Pattern.compile(patternToFind);
            Matcher m = p.matcher(contents);
            if (m.find()) {

                // If pattern found, store them in the result list
                result.add(key + ": " + m.group(1).trim());
            }
        }
        // Returning the result
        return result;
    }
    public static void main(String[] args) throws java.lang.Exception {
        String urlString ="http://www.metar.gr/ws/alexan/ZWNTANA.htm";

        // List all the keys whose values need to be extracted
        String[] keys = {"sunriseTime", "outsideTemp", "outsideHumidity"};

        // Getting the result
        List<String> attributeValuePairs = getAttributesFromURL(urlString, keys);
        System.out.println(attributeValuePairs);
    }
}