繁体   English   中英

使用Java和jsoup解析特定的HTML代码

[英]Parsing specific HTML code with Java and jsoup

我一直在思考如何实现逻辑来解析此html代码块。 我目前正在使用jsoup,Java和Android。

要显示的基本结构(我正在寻找的结构):

22:48 url1 :随机消息

22:44 url2 :更多随机消息!

代码(存储在由jsoup提供的Element对象中):

22:48
<strong> <a href="www.randomUrl.com">url1</a>:</strong> Random message.22:44 
<strong> <a href="www.randomUrl.com">url2</a>:</strong> Even more random message!22.42
<strong> <a href="www.randomUrl.com">url3</a>:</strong> This is a dumb message9922.20
<strong> <a href="www.randomUrl.com">url4</a>:</strong> This is a dumb message3

我希望如何对其进行“清理”:

22:48 <strong> <a href="www.randomUrl.com">url1</a>:</strong> Random message.
22:44 <strong> <a href="www.randomUrl.com">url2</a>:</strong> Even more random message!
22.42 <strong> <a href="www.randomUrl.com">url3</a>:</strong> This is a dumb message99
22.20 <strong> <a href="www.randomUrl.com">url4</a>:</strong> This is a dumb message3

当然,我不介意将行,URL和消息保存到一些专用的数组列表中,然后删除html。 但是我很期待听到您将如何处理这种解析。 问题在于随机消息可以是任何类型的字符串,这意味着它可以包含一个时间(22:33)。 所以我不能仅使用基于时间的正则表达式来分隔行。

我想知道是否正确的方法是同时使用时间和强元素来解析它,因为强元素似乎总是开始新的一行。

谢谢!

JSoup是一个很棒且有价值的库。 但是,如果未通过明确的开始和结束标记明确界定,则部分文本的细微变化将难以实现。

由于您所有烦人的时间戳似乎总是跟随一个<strong>标记,因此您可以删除所有与“ TIME(最后是空格)<strong>”匹配的序列的时间。

这可以通过一个非常简单的String.replaceAll正则表达式来完成:

html = html.replaceAll("(\\d{2}[:\\.]\\d{2})(\\s*<strong>)","$2");

字符串z = s.replaceAll(“(\\\\ d {2} [:\\\\。] \\\\ d {2})\\\\ s * [\\ n \\ r] \\\\ s *”,“ \\ n $ 1”) 。修剪();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM