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     }

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/17004.html

(0)
上一篇 2021年7月19日 19:47
下一篇 2021年7月19日 19:48

相关推荐

发表回复

登录后才能评论