Java:从网站表中提取数据

Java:从网站表中提取数据,java,html,web,extract,data-extraction,Java,Html,Web,Extract,Data Extraction,我正试图浏览纽约证券交易所网站上的数据。这里有一个表(虽然它的格式不像HTML表,但是在div的内部有div),其中包含我想要分析的数据点。因此,我有以下方法来实际加载并开始解析html: public static void skim() throws IOException { URL url = new URL("https://www.nyse.com/quote/XNYS:JNJ"); java.io.InputStream is = url.openConnecti

我正试图浏览纽约证券交易所网站上的数据。这里有一个表(虽然它的格式不像HTML表,但是在div的内部有div),其中包含我想要分析的数据点。因此,我有以下方法来实际加载并开始解析html:

public static void skim() throws IOException {

    URL url = new URL("https://www.nyse.com/quote/XNYS:JNJ");
    java.io.InputStream is = url.openConnection().getInputStream();
    int ptr = 0;
    StringBuffer buffer = new StringBuffer();

    while ((ptr = is.read()) != -1) {
        System.out.print((char)ptr);
        buffer.append((char)ptr);
    }

}

它工作得很好,但问题是它打印出来的HTML与我检查元素时看到的HTML有点不同。实际数据本身似乎丢失了。所以我猜它是与HTML框架分开加载的。那么我如何从网站上获取数据点呢?有什么方法可以加载网页吗?

只需使用yahoo finance。您可以使用此方法从他们的网站获取数据,然后祝您好运解析数据…

这很可能是他们的一种机制,可以防止像您这样的人在他们的主页上刮取数据。为什么不以正确的方式使用呢?除非完全模拟“无头”浏览器,否则网页抓取在现代是行不通的。您在浏览器中看到的内容与初始HTTP GET请求返回的数据几乎没有关系。有Javascript、AJAX和DOM操作以及各种其他技术可以在浏览器中构建显示的页面。正如@MattClark所说,他们可能故意让“刮”变得非常困难。