zl程序教程

您现在的位置是:首页 >  后端

当前栏目

java网络爬虫,乱码问题终于完美解决详解编程语言

JAVA爬虫网络编程语言 问题 详解 解决 完美
2023-06-13 09:11:47 时间

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

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

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; 

20 File file = new File(saveEssayUrl, fileName); 

21 File file2 = new File(saveEssayUrl); 

23 if (file2.isDirectory() == false) { 

24 file2.mkdirs(); 

25 try { 

26 file.createNewFile(); 

27 System.out.println("********************"); 

28 System.out.println("创建" + fileName + "文件成功!!"); 

30 } catch (IOException e) { 

31 e.printStackTrace(); 

32 } 

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); 

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 } 

64 } catch (Exception e2) { 

65 e2.printStackTrace(); 

66 } 

67 } 

68 return result; 

69 }

 

17004.html

cjava