在写入文件时分离内容

时间:2014-03-10 17:26:31

标签: java

以下简要说明我想要实现的目标:

从网站获取内容,删除不需要的html标记,过滤它。 然后隔离内容。如果它是工作站,那么我将把它放在一个文件中,如果它的服务器而不是另一个文件。

我将简要介绍网站上的代码。

   <TR class="RowLight">
      <TD width=0>
         <A href="Report.asp?ReportID=100&amp;sp=Service+Pack+4&amp;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>&nbsp;Microsoft&nbspWindows&nbsp2000&nbspServer&nbsp;</TD>
      <TD class=SimpleTextSmall>&nbsp;Service&nbspPack&nbsp4&nbsp;</TD>
      <TD class=SimpleTextSmall>&nbsp;30&nbsp;</TD>
   </TR>
   <TR class="RowDark">
      <TD width=0>
         <A href="Report.asp?ReportID=100&amp;sp=&amp;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>&nbsp;Microsoft&nbspWindows&nbsp7&nbspEnterprise&nbsp;</TD>
      <TD class=SimpleTextSmall>&nbsp;</TD>
      <TD class=SimpleTextSmall>&nbsp;794&nbsp;</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>&nbsp;</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("&nbsp", " ");
                 s0 = s0.replaceAll(",", "");
              }

              out.write(s0);
              if (i != 3) {
                 out.write(',');
              }

              if (i == 3) {
                 i = 0;
                 out.newLine();

              }
           }
        }
     }
  }

以下是“j”和“i”的含义:

因为我想在每次输入后创建一个新行,所以我有一个计数器(i)。它还有助于为.csv文件添加“,”。

网页的前七行包含“s”,我不需要它们,所以我删除了它们。

我希望这很容易理解。过去两周我一直坚持这一点。

感谢任何帮助。

0 个答案:

没有答案