如何从URL获取数据?

6

我在一家网站上获取了数据,并且它被展示在下面的图片中:

enter image description here

这个网站提供了一些参数的值,这些值每隔一段时间就会更新。现在,我想在 Android 应用程序中根据列名和行号检索这些数据,我知道如何打开 http 连接。但不幸的是,我不知道该从哪里开始以及如何读取图片中提供的数据。


你们有没有任何 Web 服务可以获取这些数据? - Bhavesh Patadiya
实际网址:ftp://itrf.ensg.ign.fr/pub/itrf/old/itrf92.ssc - Philipp Reichart
3个回答

12

除非您有特殊的数据源可供使用,否则您必须手动读取网站内容并进行处理。以下是来自Java教程的链接,介绍如何从URL连接中读取内容。

import java.net.*;
import java.io.*;

public class URLConnectionReader {
    public static void main(String[] args) throws Exception {
        URL oracle = new URL("http://www.oracle.com/");
        URLConnection yc = oracle.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(
                                yc.getInputStream()));
        String inputLine;
        while ((inputLine = in.readLine()) != null) 
            System.out.println(inputLine);
        in.close();
    }
}

编辑:

如果你在代理后面,你还应该设置这些系统属性(为适当的值):

System.setProperty("http.proxyHost", "3.182.12.1");
System.setProperty("http.proxyPort", "1111");

但我认为你写的代码将读取整个页面,而我想知道如何读取表格元素。 - LetsamrIt
1
是的,它可以读取整个页面。您可以在阅读时跳过字符,直到找到表格(如果您知道它是如何开始的),但正如我所说,默认情况下没有办法自动处理纯文本...一旦您拥有站点内容,正则表达式可以帮助解决问题。 - zeller
获取内容后,您可以解析HTML文档并仅提取所需数据。 - F. Mayoral
我只有一个小问题,您是指变量inputLine包含整个页面的数据吗?对不起,这个问题有点傻。 - LetsamrIt
我尝试了发布的代码,但当我运行它时,控制台没有显示任何内容。 - LetsamrIt
显示剩余3条评论

1
如果数据只是明文,并且表格格式没有改变,您可以解析整个表格。例如,在读取“-------…”行后,您可以使用扫描器解析值:
 Scanner s;
 while ((inputLine = in.readLine()) != null)
 {
   s = new Scanner(input).useDelimiter(" ");
   //Then readthe Values like
   value = s.next()); // add all values in a list or array       
 } 
 s.close();

0
你需要解析整个内容。难道你不能调用一个 Web 服务来获取这些数据,或者直接访问属于该视图的数据库吗?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接