标签:
最近在做毕设需要用到的爬虫系统,页面抓取这一块使用的是NodeJS语言,在最开始写的页面抓取的程序中,针对gb2312编码的页面保存完后显示的是乱码,开始认为在用Java读取文件时进行一个编码转换工作就可以解决了,但是试了半天,编码只会越来越慢,后来猜想,NodeJS请求到的页面的Body传输过来的是二进制的流信息,如果采用错误的编码方式对二进制信息进行解码,那么得到的结果坑定是错误的,再将这种结果保存到文件中,结果肯定还是错的,所以,通过上述的方法,不可能得到正确的结果。
后来的解决方法是,在NodeJS中,对二进制数据进行解码,通过正则表达式获取文件正确的编码,再用正确的编码对二进制数据进行解码,最终得到正确的结果。
在请求页面信息时,有些网站由于页面内容过多,对页面中的内容进行了压缩,可以通过Headers[‘content-code‘]查看页面压缩所使用的压缩方法,针对这种页面,在解析前,必须先对流信息进行解压缩,得到完整的流信息后,再采用上述的方法对信息进行解码操作。
NodeJS中关于编码操作,使用的是iconv-lite库,压缩与解压缩采用的是zlib库。
标签:
原文地址:http://www.cnblogs.com/byheart/p/4204697.html