如何在通过java进行Web抓取期间避免td标记中的HTML空格

时间:2016-05-12 06:26:18

标签: java html web-scraping jsoup

我正在抓取一个将数据存储在csv中的网站。代码工作正常,但问题是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 个答案:

答案 0 :(得分: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("   ,   ");
}