java - 如果我将加密的 html 文件解析为字符串,我能以某种方式从中获取文本吗?
问题描述
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? l?r{ΪεI/ΉΟ~νJ?j?Ά-??ΙiLs?YdHλ²ύ?α?η?ογV"ηw[:?0??νSQψyθ?*²?γpI???²ρνl???2JμΚ?ΣS? Αl4ςRΛ\KR545υ?SK
我能做些什么来将其转换为我可以使用的形式吗?我在网上找不到具体的东西。
编辑:我具体想要的是解密该信息。例如,我想要的是能够从 facebook 搜索它的事件页面中获取文本以找到我想要的关键字并在其他地方使用这些关键字。
解决方案
正如@tmadam 在他的评论中指出的那样,问题在于来自流的响应被压缩(压缩)。所以,如果你想从 URL 流中读取它,你需要通过一个GZIPInputStream
before InputStreamReader
(见这个答案)。或者,正如@tmadam 建议的那样,您可以使用 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");
}
}
}
推荐阅读
- sql-server - TSV 上的“BCP 复制失败”
- c# - 转换为字节数组后颜色错误
- regex - Textedit:如何用同一个词替换几个不同的词?
- python - subprocess.check_output(['git', 'shortlog'])
- android - LinearLayout 和 CameraSource 不填满屏幕
- python - SQLAlchemy:“InstrumentedList”对象没有属性/错误请求浏览器(或代理)发送了此服务器无法理解的请求
- android - Android studio 无法识别手机
- xml - 使用 SharePoint Designer 将 XML 从自定义列表库解析到文档库
- c# - 更新另一个类的值
- c# - 如何编译包含错误的 .sln 文件?