import java.net.*;
import java.io.*;
import org.jsoup.Jsoup;
import org.jsoup.helper.Validate;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
public class UrlReaderTest {
public static void main(String[] args) throws Exception {
URL url = new URL("https://www.amazon.com/");
String s = null;
StringBuilder contentBuilder = new StringBuilder();
try {
BufferedReader in = new BufferedReader(new
InputStreamReader(url.openStream()));
String str;
while ((str = in.readLine()) != null) {
contentBuilder.append(str);
}
in.close();
} catch (IOException e) {
System.err.println("Error");
}
s = contentBuilder.toString();
Document document = Jsoup.parse(s);
System.out.println(document.text());
}
}
我得到的主要符号如下:Η1?0Π??0ή=tθJr?/β@ Q? ? Αl4ςRΛ\KR545υ?SK
我可以做些什么来将其转换为可以使用的形式吗? 我在网上找不到特定的内容。
编辑:我具体想要的是解密该信息。例如,我想要的是能够从Facebook搜索的事件页面中获取文本,以找到我想要的关键字并在其他地方使用这些关键字。
答案 0 :(得分:4)
正如@ t.m.adam在其评论中指出的那样,问题在于来自流的响应被压缩(压缩)。因此,如果您想从URL流中读取它,则需要在GZIPInputStream
之前通过InputStreamReader
传递它(请参阅this answer)。或者,按照@ t.m.adam的建议,您可以使用Jsoup的内置connect()
方法:
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class UrlReaderTest {
public static void main(String[] args) {
System.out.println(System.getProperty("java.classpath"));
try {
Document doc = Jsoup.connect("https://www.amazon.com").get();
System.out.print(doc.text());
}
catch (IOException e) {
System.err.println("Error");
}
}
}