Java HTML的响应是重复的行
我想得到aliexpress的HTML响应,它正在工作,但当我尝试在浏览器中加载代码时,它似乎在同一个onglet中重复了很多次Java HTML的响应是重复的行,java,Java,我想得到aliexpress的HTML响应,它正在工作,但当我尝试在浏览器中加载代码时,它似乎在同一个onglet中重复了很多次 package scrape; import java.io.*; import java.net.*; public class Scrape { public static void main(String[] args) throws ProtocolException, MalformedURLException, IOException {
package scrape;
import java.io.*;
import java.net.*;
public class Scrape {
public static void main(String[] args) throws ProtocolException, MalformedURLException, IOException {
URL url;
url = new URL("https://best.aliexpress.com");
HttpURLConnection urlConnection = (HttpURLConnection)url.openConnection();
urlConnection.setRequestMethod("GET");
BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())) ;
String inputLine;
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null ) {
content.append(inputLine);
System.out.println(content);
}
}
}
您正在循环中追加
StringBuffer
,并每次打印它
要解决此问题,请将print语句移动到循环之外:
while ((inputLine = in.readLine()) != null ) {
content.append(inputLine);
}
System.out.println(content);
这是因为,当您输出内容时,您输出的是
内容
,而不是输入行
。这意味着,当你得到这样的输入时:
第1行第2行
第3行 您的输出将如下所示: 第1行
第1行第2行
第1行第2行第3行 为了获得所需的输出,您可以在每次迭代时打印该行,如下所示:
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null ) {
content.append(inputLine);
System.out.println(inputLine);
}
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null ) {
content.append(inputLine);
}
System.out.println(content);
输出:
第1行第2行
第3行 否则,您可以在迭代结束时打印完整输出,如下所示:
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null ) {
content.append(inputLine);
System.out.println(inputLine);
}
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null ) {
content.append(inputLine);
}
System.out.println(content);
这将获得输出:
第1行第2行第3行
现在,如果要按行拆分此输入,只需在输入之间添加一个行分隔符:
StringBuffer content = new StringBuffer();
while ((inputLine = in.readLine()) != null ) {
if(content.length() != 0) {
content.append(System.lineSeparator());
}
content.append(inputLine);
}
System.out.println(content);
这将获得以下输出:
第1行第2行
第3行
什么是红葡萄酒?不,不是。您正在显示每一行的累积内容,其中必然包括前几行。噢,谢谢,忘记了:)thnks bro;):)