码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-09-25 22:05:55      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:dir   new   连接   print   get   nts   网络爬虫   col   使用   

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

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

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网络爬虫,乱码问题终于完美解决

标签:dir   new   连接   print   get   nts   网络爬虫   col   使用   

原文地址:http://www.cnblogs.com/-LilyBlog-/p/7593841.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!