现在学习爬虫程序的人越来越多,学习中难免会遇到问题,比如爬虫时出现了乱码。下面给大家分享一下爬虫乱码的解决方法。
网络爬虫有两种选择,一种是nutch、 hetriex,另一种是自编的爬虫。当处理乱码时,原理是一样的,但是当处理乱码时,前者只能在理解源代码后修改它,所以有必要浪费一些精力;后者更加自由和方便,并且可以在编码过程中进行处理。这也是为什么许多人在编写带有框架的爬虫程序时无法启动的原因。例如,相对成熟的nutch在处理乱码字符方面比较简单,所以乱码字符还是会出现,所以需要二次开发才能真正解决乱码问题。
1、网络爬虫出现乱码的原因
源网页的编码与抓取后的编码转换不一致。如果源网页是由gbk编码的字节流,程序在抓取后直接用utf-8编码并输出到存储文件中,这就不可避免地会造成代码的乱码,即当源网页编码与程序抓取后直接处理编码一致时,就不会有乱码,统一字符编码后也就不会有乱码。注意区分源网络代码A、程序直接使用的代码B、和统一转换字符的代码c。
A、就是web page的服务器端编码
B、捕获的数据最初是字节数组,由A编码。只有当B=A时,才能保证没有乱码字符,否则,当字符集不兼容时,乱码字符总是会出现。这一步通常用于测试。
C、统一转码是指得到网页的原始编码A后,再进行的统一编码,主要是为了将各个网页的数据统一成一类编码,往往选择字符集较大的utf-8为宜。
每个网页都有自己的编码,像gbk、utf-8、iso8859-1,以及日文的jp系统编码、西欧、俄文等编码各不相同,当进行漫爬时总是会扩展出各种编码,有的爬虫是对web网页进行简单的编码识别再进行统一编码,有的是不做源网页的判断直接统一按utf-8来处理ÿ