以下简要说明我想要实现的目标:
从网站获取内容,删除不需要的html标记,过滤它。 然后隔离内容。如果它是工作站,那么我将把它放在一个文件中,如果它的服务器而不是另一个文件。
我将简要介绍网站上的代码。
<TR class="RowLight">
<TD width=0>
<A href="Report.asp?ReportID=100&sp=Service+Pack+4&os=Microsoft+Windows+2000+Server">
<IMG border=0 src="images/icolink3.gif" alt="Open the target" width=11 height=11>
</A>
</TD>
<TD class=SimpleTextSmall> Microsoft Windows 2000 Server </TD>
<TD class=SimpleTextSmall> Service Pack 4 </TD>
<TD class=SimpleTextSmall> 30 </TD>
</TR>
<TR class="RowDark">
<TD width=0>
<A href="Report.asp?ReportID=100&sp=&os=Microsoft+Windows+7+Enterprise">
<IMG border=0 src="images/icolink3.gif" alt="Open the target" width=11 height=11>
</A>
</TD>
<TD class=SimpleTextSmall> Microsoft Windows 7 Enterprise </TD>
<TD class=SimpleTextSmall> </TD>
<TD class=SimpleTextSmall> 794 </TD>
</TR>
到目前为止,我的代码能够将.csv文件中的上述代码作为
Microsoft Windows 2000 Server Service Pack 4 30
Microsoft Windows 7 Enterprise ; 794
A“;”正被用来代替空间。
我希望服务器和Windows 7分开。我无法得到逻辑。
以下是我过滤内容的代码(不包括打开网址连接,缓冲区,读者等)
try {
int i = 0;
int j = 0;
while ((inputLine = in.readLine()) != null) {
if (inputLine.contains(s)) {
j++;
if (j >= 7) {
i++;
String s0 = inputLine;
String m = "<TD class=SimpleTextSmall> </TD>";
if (s0.contains(m)) {
s0 = " ";
} else {
int startPosition = s0.indexOf(';');
int endPosition = s0.indexOf(';', startPosition + 1);
s0 = s0.substring(startPosition + 1, endPosition);
s0 = s0.replaceAll(" ", " ");
s0 = s0.replaceAll(",", "");
}
out.write(s0);
if (i != 3) {
out.write(',');
}
if (i == 3) {
i = 0;
out.newLine();
}
}
}
}
}
以下是“j”和“i”的含义:
因为我想在每次输入后创建一个新行,所以我有一个计数器(i)。它还有助于为.csv文件添加“,”。
网页的前七行包含“s”,我不需要它们,所以我删除了它们。
我希望这很容易理解。过去两周我一直坚持这一点。
感谢任何帮助。