问题描述
我正在编写一个 JAVA 程序来提取项目的 HTML 数据。 这是 HTML 代码
<td align="left" valign="top" class="style3">
PC / Van<br>$14 (Mon-Fri, excl PH)
<br>
$18 (Sat, Sun & PH)<br><br>$70/Day(Mon-Fri, excl PH: Entry - 24:00)
<br>
$100/day (Sat, Sun & PH: Entry - 24:00)
</td></tr>
以下是我提取的JAVA代码。
String connect1 = url1.toString();
Document doc1 = Jsoup.connect(connect1).get();
// get all links
Elements type1 = doc1.select("[class=\"style3\"]");
int size = type1.size();
try {
String text =type1.first.text();
System.out.println(text);
} catch (Exception e) {
e.printStackTrace();
}
我得到的输出是
PC / Van$14 (Mon-Fri, excl PH)$18 (Sat, Sun & PH)$70/Day(Mon-Fri, excl PH: Entry - 24:00)$100/day (Sat, Sun & PH: Entry - 24:00)
如何将它们从 <br> 标签中分离出来?
1楼
您可以将所有<br>
标签替换为\\n
符号,代码示例如下所示:
Document doc1 = Jsoup.parse(s);
Elements type1 = doc1.select("[class=\"style3\"]");
try {
String text =type1.first().html();
text = text.replaceAll("<br>", "\n");
System.out.println(text);
} catch (Exception e) {
e.printStackTrace();
}
或使用<br>
标签将文本拆分为字符串数组
Document doc1 = Jsoup.parse(s);
Elements type1 = doc1.select("[class=\"style3\"]");
try {
String text =type1.first().html();
String[] textSplitResult = text.split("<br>");
if (null != textSplitResult) {
for (String t : textSplitResult) {
System.out.println(t);
}
}
} catch (Exception e) {
e.printStackTrace();
}
或使用 java8 lambda 输出结果
String text =type1.first().html();
String[] textSplitResult = text.split("<br>");
if (null != textSplitResult) {
Arrays.stream(textSplitResult).peek((x) -> System.out.println(x)).count();
//or Arrays.stream(textSplitResult).peek(System.out::println).count();
}
执行结果:
PC / Van
$14 (Mon-Fri, excl PH)
$18 (Sat, Sun & PH)
$70/Day(Mon-Fri, excl PH: Entry - 24:00)
$100/day (Sat, Sun & PH: Entry - 24:00)
2楼
根据这个问题
String text =type1.first.text();
String[] textArr = text.split("<br>");