使用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();