2016-05-12 47 views
2

我在抓取存储csv数据的网站。代码工作正常,但问题是HTML中所有这些地方,代码是''。为了避免这种情况,我尝试了一些东西(在代码中提到),但是由于代码重写了这些数据。现在,我真正想要的是'这应该被删除,没有任何数据干扰。如何通过java在网页抓取过程中避免td标签中的HTML空间

for (Iterator<Element> it = tdElements.iterator(); it.hasNext();) { 
    if (it.hasNext()) { 
     sb.append(" , "); 
     sb.append(" \r\n "); 
    } 

    for (Iterator<Element> it2 = tdElements.iterator(); it.hasNext();) { 
     Element tdElement2 = it.next(); 
     final String content; 
     content = tdElement2.text().replace(",", ""); 
     //I added the following code to avoid that 'Â' 
     final String content2; 
     content2 = tdElement2.text().replace("\u00a0",""); 
     if (it2.hasNext()) { 

      sb.append(formatData(content)); 
      sb.append(formatData(content2)); 
      sb.append(" , "); 
     } 
    } 

    System.out.println(sb.toString()); 
    sb.flush(); 
    sb.close(); 
} 

我明白那是什么,为什么它重写数据,因为sb.append(formatData(content));的我追加整个数据的两倍,这就是为什么它是创造问题。那么我怎样才能同时管理','和''。

回答

1

您应该对修改后的字符串进行替换,然后您只需添加content2。

String content = tdElement2.text().replace(",", ""); 
//I added the following code to avoid that 'Â' 
String content2 = content.replace("\u00a0",""); 
if (it2.hasNext()) { 
sb.append(formatData(content2)); 
sb.append(" , "); 
} 

你也可以把它改写为

String content2 = tdElement2.text().replace(",", "").replace("\u00a0",""); 
if (it2.hasNext()) { 
sb.append(formatData(content2)).append(" , "); 
} 
+0

也为阅读乐趣:http://stackoverflow.com/questions/306862/does-using-final-for-variables-in-java-改进垃圾收集基本上,你不需要使用final,因为字符串是不可改变的。它在垃圾收集方面也没有任何优势。它只是增加了混乱。您也没有在该范围内分配代码来覆盖它们,或者可以覆盖它们。 – Tschallacka

相关问题