gpt4 book ai didi

java - 使用Java读取网页(html)的两种方式之间的区别

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:09:25 25 4
gpt4 key购买 nike

第一种方式 就是 url.openStream,然后是 InputStreamReader,

    StringBuffer temp = new StringBuffer();
URL url = new URL(addr);
BufferedReader bf = new BufferedReader(new InputStreamReader(url.openStream(),"ISO-8859-1"), BUFFER_SIZE );
int charsRead;
char[] copyBuffer = new char[BUFFER_SIZE];
while ((charsRead = bf.read(copyBuffer, 0, BUFFER_SIZE)) != -1) {
temp.append(copyBuffer, 0, charsRead);
}
bf.close();

我发现结果与 IE/Chrome 不同。

第二种方式是先使用HttpURLConnection,然后是getInputStream,然后是InputStreamReader

    URL url = new URL(addr);
HttpURLConnection con = (HttpURLConnection) url.openConnection();

con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", USER_AGENT);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer temp = new StringBuffer();

while ((inputLine = in.readLine()) != null) {
temp.append(inputLine);
}
in.close();

如果我查看源代码,这将准确返回 IE 中的内容。

所以我的问题是:

  1. 为什么有时使用 url.openStream 的第一种方法返回的 html 与我从 IE 中读取的不同?标签少了,回车数不一样(第2题)

  2. 我注意到第一种方法的 html 有合理的回车符。第二种方法中的那个没有回车。 IE 查看源显示比第一种方法更多的回车符。这是为什么?

谢谢!

最佳答案

站点根据不同的事物给出不同的输出,例如用户代理、发送的接受 header 、可用的 cookie/ session 、接受的语言 header 等

这些东西会改变所提供的 html,以适应客户的需求。

因此在您的情况下,您有不同的用户代理和其他 header ,因此响应可能因此而不同。

关于java - 使用Java读取网页(html)的两种方式之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21668372/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com