爬虫数据清洗

离上次更新文章已经将近半年的时间了,该稳定的基本稳定了:),以后要保持更新文章的频率,不能荒废。话不多说,进入正题。
最近做的一个项目需要把爬虫抓取的数据进行清洗,自己第一次做相关的东西,有什么不对的地方,还望多多指正。
1、拿到的原始数据


Json格式的数据,但汉字都是Unicode编码,还有Html的标签比如<span>,还有转义字符,其实还包括一些特定的东西,这个就根据实际情况来了,比如这个就包括了“收起”的Unicode编码(左下角的\u6536\u8d77)
2、处理过程
字符串比较多,直接贴图

1)第一步过滤Html标签
<code>
str = HtmlRegexpUtil.filterHtml(str);
</code>
前后对比

贴一下HtmlRegexpUtil的代码(非原创)
<code>
private final static String regxpForHtml = "<([^>]*)>"; // 过滤所有以<开头以>结尾的标签
public static String filterHtml(String str) {
Pattern pattern = Pattern.compile(regxpForHtml);
Matcher matcher = pattern.matcher(str);
StringBuffer sb = new StringBuffer();
boolean result1 = matcher.find();
while (result1) {
matcher.appendReplacement(sb, "");
result1 = matcher.find();
}
matcher.appendTail(sb);
return sb.toString();
}
</code>
2)把Unicode转成字符串

结果

显示可以成功转义,但里面还有一些其他的字符,直接在.trim()后面加上.replace("\t","")即可

TestVo一个普通的Bean而已,和Json数据是相对应的,简单的贴一下


主要是EncodingUtil.unicodeToString,这个从网上找了好几个,贴一个最合适的,其他的多多少少会有问题。
<code>
public static String unicodeToString(String str) {
Pattern pattern = Pattern.compile("(\\u(\p{XDigit}{4}))");
Matcher matcher = pattern.matcher(str);
char ch;
while (matcher.find()) {
ch = (char) Integer.parseInt(matcher.group(2), 16);
str = str.replace(matcher.group(1), ch + "");
}
return str;
}
</code>

对这边有点不是很熟悉,写的有点凌乱,大家多多包涵~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,742评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,273评论 19 139
  • 一、 1、请用Java写一个冒泡排序方法 【参考答案】 public static void Bubble(int...
    独云阅读 5,281评论 0 6
  • “初,我昨晚做了一个梦。”凌元还没等凌初坐下来,就一脸兴奋的说。 “什么梦呀?”凌初不解,随口问了一句。 ...
    玥落无心阅读 2,801评论 0 0
  • 落花谢去几时归? 把酒闲庭,邀月与君醉。 影乱梦散深夜回,红尘往事催人泪。 昔日风过柳絮飞。 倚栏入睡,此时却难寐...
    窗外月光冷阅读 1,265评论 1 5

友情链接更多精彩内容