在Java中直接从URL读取

在Java中直接从URL读取,java,html,url,web,Java,Html,Url,Web,当我打印的内容时,我看到的HTML与在浏览器中使用“查看源代码”功能时显示的HTML不同(在我的情况下,是Chrome,但我认为确切的浏览器并不重要)。例如,上述URL中id为“result_10”的div在浏览器中显示如下: <div id="result_10" class="rsltGrid prod" name="B007I5JT4S"> 这只是通过编程读取此页面和使用浏览器生成的HTML在标识符和页面结构方面的众多差异之一。我不确定这是源于某种URL解析问题还是完全不同的

当我打印的内容时,我看到的HTML与在浏览器中使用“查看源代码”功能时显示的HTML不同(在我的情况下,是Chrome,但我认为确切的浏览器并不重要)。例如,上述URL中id为“result_10”的div在浏览器中显示如下:

<div id="result_10" class="rsltGrid prod" name="B007I5JT4S">
这只是通过编程读取此页面和使用浏览器生成的HTML在标识符和页面结构方面的众多差异之一。我不确定这是源于某种URL解析问题还是完全不同的问题

如何从Java应用程序中获取在浏览器中看到的相同页面内容

这是我用来读取URL的函数,带有“http://www.amazon.com/s/ref=sr_pg_3?rh=n%3A172282&page=1“这是有争议的论点

public static void printWebPageContents(String url) throws IOException {
    URL specifiedUrl = new URL(url);
    BufferedReader in = new BufferedReader(new InputStreamReader(specifiedUrl.openStream()));

    String inputLine;
    while ((inputLine = in.readLine()) != null)
        System.out.println(inputLine);

    in.close();
}

如果需要任何澄清,请随时告诉我。

如果与您的问题有关,我不会感到惊讶。我不知道
URL.openStream
的默认设置是什么,但我怀疑它是否与Chrome相同

您是否考虑过他们可能会进行某种用户代理检测?(在这种情况下,这将是一个欺骗的问题)。“如果需要任何澄清,请毫不犹豫地告诉我。”你的问题是什么?你知道一个网站在你的电脑上和在你的手机上会是什么样子吗?是这样的。@AndrewThompson我怎样才能从Java应用程序中获取我在浏览器中看到的相同页面内容?“我怎样才能从Java应用程序中获取我在浏览器中看到的相同页面内容?”a)将其编辑到..问题中。b) 但请澄清-哪个浏览器?你在上面说“浏览器不重要”,但如果你检查每个浏览器的源代码,你可能会对这些差异感到惊讶。啊,我不知道不同的用户代理提供了不同的内容。有没有一种简单的方法可以获得与我在Chrome中看到的相同的页面内容?@AlexWood也许。尝试欺骗chrome用户代理。由amazon.com决定他们为您提供什么内容。它可能不仅基于您的代理,还可能存在Ajax或其他javascripty功能,修改标记和添加内容。
public static void printWebPageContents(String url) throws IOException {
    URL specifiedUrl = new URL(url);
    BufferedReader in = new BufferedReader(new InputStreamReader(specifiedUrl.openStream()));

    String inputLine;
    while ((inputLine = in.readLine()) != null)
        System.out.println(inputLine);

    in.close();
}