java网络爬虫,乱码问题终于完美解决

Posted _YeLL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java网络爬虫,乱码问题终于完美解决相关的知识,希望对你有一定的参考价值。

第一次写爬虫,被乱码问题困扰两天,试了很多方法都不可以,今天随便一试,居然好了。

在获取网页时创建了一个缓冲字节输入流,问题就在这个流上,添加标红代码即可

BufferedReader in = null;

in = new BufferedReader(new InputStreamReader(
                    connection.getInputStream(),"utf-8"));

附上代码,以供参考。

 1 public String sendGet(String url) {
 2         Writer write = null;
 3         // 定义一个字符串用来存储网页内容
 4         String result = null;
 5         // 定义一个缓冲字符输入流
 6         BufferedReader in = null;
 7         try {
 8             // 将string转成url对象
 9             URL realUrl = new URL(url);
10             // 初始化一个链接到那个url的连接
11             URLConnection connection = realUrl.openConnection();
12             // 开始实际的连接
13             connection.connect();
14             // 初始化 BufferedReader输入流来读取URL的响应
15             in = new BufferedReader(new InputStreamReader(
16                     connection.getInputStream(),"utf-8"));
17             // 用来临时存储抓取到的每一行的数据
18             String line;
19 
20             File file = new File(saveEssayUrl, fileName);
21             File file2 = new File(saveEssayUrl);
22 
23             if (file2.isDirectory() == false) {
24                 file2.mkdirs();
25                 try {
26                     file.createNewFile();
27                     System.out.println("********************");
28                     System.out.println("创建" + fileName + "文件成功!!");
29 
30                 } catch (IOException e) {
31                     e.printStackTrace();
32                 }
33 
34             } else {
35                 try {
36                     file.createNewFile();
37                     System.out.println("********************");
38                     System.out.println("创建" + fileName + "文件成功!!");
39                 } catch (IOException e) {
40                     e.printStackTrace();
41                 }
42             }
43             Writer w = new FileWriter(file);
44             
45             while ((line = in.readLine()) != null) {
46                 // 遍历抓取到的每一行并将其存储到result里面
47 //                line = new String(line.getBytes("utf-8"),"gbk");
48                 w.write(line);
49                 w.write("\r\n");
50                 result += line;
51             }
52             w.close();
53         } catch (Exception e) {
54             System.out.println("发送GET请求出现异常!" + e);
55             e.printStackTrace();
56         }
57         // 使用finally来关闭输入流
58         finally {
59             try {
60                 if (in != null) {
61                     in.close();
62                 }
63                 
64             } catch (Exception e2) {
65                 e2.printStackTrace();
66             }
67         }
68         return result;
69     }

 


以上是关于java网络爬虫,乱码问题终于完美解决的主要内容,如果未能解决你的问题,请参考以下文章

解决爬虫中文乱码问题

网络爬虫在爬取网页时,响应头没有编码信息...如何解决保存在本地的乱码问题?

python爬虫中文乱码问题

[转]java中文乱码的解决

js url传值中文乱码完美解决(JAVA)

js url传值中文乱码完美解决(JAVA)