【问题标题】:Is it possible to download only the HEAD tag of a page?是否可以只下载页面的 HEAD 标签?
【发布时间】:2016-01-30 05:06:08
【问题描述】:

我对此进行了一些研究,但没有确定的答案。

这个问题提供了一些解决方法:How can I download only part of a page?

但话又说回来,我不想只下载页面的随机部分,而是第一个标签,头部。

是否有可能以某种方式查询页面,并将其内容流式传输到缓冲区并在您发现标签更接近</head> 时立即停止下载(丢弃其余部分)?

编辑: 向页面本身添加内容是不可能的,因为我想在我的应用程序上提取网站的标题。

想象http://stackoverflow.com 作为参数输入。整个页面大约 240kb,但如果我在点击</head> 的那一刻停止下载,它只有 5kb。让我可以为这个页面节省大约 97% 的带宽。

【问题讨论】:

  • 这个问题是假设这个人想在页面中放一些东西,比如当前时间或用户名,它改变了字节的顺序,所以很难猜测哪个字节范围有你的信息,如果页面是由 asp.net 或类似的东西生成哦,伙计
  • 是的,提供字节范围肯定不在计划之内。这就是为什么我认为如果我可以流式传输结果并在我匹配 </head> 时立即停止,这可能是一个很好的方法。现在,问题仍然存在:我们可以流式传输页面字符吗?

标签: java http web download get


【解决方案1】:

也许这对你来说已经足够了 - 打开一个 URLConnection 并从输入流中读取



    public class test {
        public static void main(String[] args) throws Exception {

            URL oracle = new URL("http://www.oracle.com/");
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(oracle.openStream()));

            String inputLine;
            while ((inputLine = in.readLine()) != null){
                if(inputLine.contains("</head>")) break;
                System.out.println(inputLine);
            }
            in.close();
        }

    }

here你有教程

【讨论】:

  • 您确定这不会下载整个页面然后流式传输下载的内容吗?如果你是,那么这确实是正确的答案!
  • 文档说 Httpurlconnection 打开套接字并且流正在从中读取。所以asnwer是,是的,它应该只下载网站的一部分。
  • 我已经通过使用 stackoverflow.com 作为示例和 nethogs 应用程序来跟踪带宽使用情况对其进行了测试 - 如果条件我已经下载了 27KB,而我已经下载了超过 50KB 的 if 条件。所以结论是文档不会说谎:)
  • 一个问题是,如果页面被压缩并且没有行怎么办?喜欢 Google.com 页面来源?
猜你喜欢
  • 2013-05-19
  • 1970-01-01
  • 2014-04-08
  • 2013-01-14
  • 1970-01-01
  • 1970-01-01
  • 2017-09-18
  • 1970-01-01
  • 2021-04-01
相关资源
最近更新 更多