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

问题描述:

我一直在思考如何实现一个逻辑来解析这段代码,我有。我目前正在使用jsoup,Java和Android。使用Java和jsoup解析特定的HTML代码

基本结构显示(一个我正在寻找):

22:48 为url1:随机消息

22:44 URL2:更随机的消息!

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

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是一个非常有价值的图书馆。然而,如果没有明确的开始和结束标签进行明确的界定,部分文本的猥亵改变就不容易实现。

因为所有你讨厌的时间戳似乎总是跟着一个<强>标签,你可以匹配所有序列中删除时间“TIME(最终其次是空格)<强>”。

这可以用一个相当简单的regex 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“).trim();