【问题标题】:Printing the content of web page in Java用Java打印网页的内容
【发布时间】:2021-08-01 16:25:03
【问题描述】:

我正在尝试使用 HttpURLconnection 类读取https://example.com/ 的内容。我已经删除了尖括号之间的 html 标签,但我没有删除花括号之间的单词。需要打印的单词之间也没有空格。

代码如下:

    URL url = new URL("https://example.com/");
    Scanner sc = new Scanner(url.openStream());
    StringBuffer sb = new StringBuffer();
    while(sc.hasNext()) {
        sb.append(sc.next());
         }
    String result = sb.toString();

    //Removing the HTML tags
    result = result.replaceAll("<[^>]*>", " ");
    
    System.out.println("Contents of the web page: "+result);

这是我得到的输出:

网页内容:ExampleDomain body{background-color:#f0f0f2;margin:0;padding:0;font-family:-apple-system,system-ui,BlinkMacSystemFont,"SegoeUI","OpenSans", "HelveticaNeue",Helvetica,Arial,sans-serif;}div{width:600px;margin:5emauto;padding:2em;background-color:#fdfdff;border-radius:0.5em;box-shadow:2px3px7px2pxrgba(0,0 ,0,0.02);}a:link,a:visited{color:#38488f;text-decoration:none;}@media(max-width:700px){div{margin:0auto;width:auto;}} ExampleDomain此域用于文档中的说明性示例。您可以在没有事先协调或请求许可的情况下在文献中使用此域。更多信息...

如何去掉花括号之间的内容? 以及如何在句子中的单词之间放置空格?

【问题讨论】:

  • “如何在句子中的单词之间放置空格” - 你不能没有字典。您需要一本字典来找出哪些字符构成一个单词。
  • 我查看了页面,源中的单词之间似乎有空格。为什么在阅读源代码时删除空格?如果您不删除空格,则以后不需要再添加它们。
  • 我在哪里删除空格,你能指定那个代码吗?什么是正确的代码才能避免这种情况发生?
  • 当然,sb.append(sc.next()); 应该是 sb.append(" " + sc.next());,因为 Scanner#next 是如何工作的。它给你一个“单词”,一个没有任何空格的字符串。您通过不适应 next 的返回来有效地删除空格。见docs.oracle.com/javase/8/docs/api/java/util/Scanner.html#next--
  • 如果解决了您的问题,请标记为已接受的答案。

标签: java html android-developer-api printing-web-page


【解决方案1】:

要删除花括号之间的内容,您可以使用String#replaceAll(String, String)Javadoc

str.replaceAll("\\{.*\\}", "");

此正则表达式匹配左大括号和右大括号之间的所有字符。所以你的代码是:

URL url = new URL("https://example.com/");
Scanner sc = new Scanner(url.openStream());
StringBuffer sb = new StringBuffer();
while (sc.hasNext()) {
    sb.append(" " + sc.next());
}
String result = sb.toString();

// Removing the HTML tags
result = result.replaceAll("<[^>]*>", "");

// Removing the CSS stuff
result = result.replaceAll("\\{.*\\}", "");

System.out.println("Contents of the web page: " + result);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2022-10-24
  • 1970-01-01
  • 1970-01-01
  • 2015-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多