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     }
时间: 2024-10-09 05:07:53

java网络爬虫,乱码问题终于完美解决的相关文章

java网络爬虫基础学习(一)

刚开始接触java爬虫,在这里是搜索网上做一些理论知识的总结 主要参考文章:gitchat 的java 网络爬虫基础入门,好像要付费,也不贵,感觉内容对新手很友好. 一.爬虫介绍 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网下载网页,是搜索引擎的重要组成部分. 传统爬虫: 获得URL ->放入队列 ->抓取网页,分析信息 ->新的URL ->放入队列 ->抓取网页,分析信息... ->满足一定条件,停止. 聚焦爬虫: 根据一定的网页分析算法过滤与主题无关的链接

学 Java 网络爬虫,需要哪些基础知识?

说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬虫而且还能做的非常好,在开源社区中有不少优秀的 Java 网络爬虫框架,例如 webmagic .我的第一份正式工作就是使用 webmagic 编写数据采集程序,当时参与了一个舆情分析系统的开发,这里面涉及到了大量网站的新闻采集,我们就使用了 webmagic 进行采集程序的编写,由于当时不知道其设

Java 网络爬虫获取网页源代码原理及实现

Java 网络爬虫获取网页源代码原理及实现 1.网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件. 2.那么程序获取网页的原理到底是怎么回事呢?看下面的图:客服端首先向服务器端发出Http请求,之后服务器端返回相应的结果或者请求超时客户端自己报错. 服务器端发出的Http请求,实际上说是对服务器的文件的请求

java 网络爬虫框架

java 网络爬虫框架: apache Nutch ,Heritrix等,主要参照开源社区提供的40个开源项目 文章背景: 最近要写个爬虫抓去新浪微博的数据,然后用hadoop存储后,进行分析,就在网上搜取相关资料. 网友推荐使用python来做,但鉴于本人擅长的是java,学习python需要一定的时间成本,还是选择java.一开始想自己从头写,搜到apache httpClient,  后来想着还是用开源成熟的框架来做,目前觉得apache Nutch 和Heritrix是个不错的选择,不过

关于Java网络爬虫---模拟txt文件上传操作。

业务需求是这样的,公司400业务中客户使用的,400电话号码,可以添加多个目的码你可以理解为转接号码: 这些配置的目的码我们会在网关服务器上配置成白名单,既拥有某些权限.先提出的要求是先添加或者变动目的码要及时同步到网关. 场景: 1.我们的网关服务器接受的白名单(目的码)是已txt文件上传的,数据按照制定的格式保存在txt里面. 2.利用Java网络爬虫模拟txt文件上传.------2018-4-7现在不写了,代码在公司电脑上明天总结一下在写. 原文地址:https://www.cnblog

java网络爬虫基础学习(三)

尝试直接请求URL获取资源 豆瓣电影 https://movie.douban.com/explore#!type=movie&tag=%E7%83%AD%E9%97%A8&sort=time&page_limit=20&page_start=0 浏览器打开该地址: 发现是这样的 在这里我们需要用java抓取电影的信息,首先要找到资源链接,浏览器右键->检查打开谷歌调试工具 我们可以看到下图 有很多的资源请求,在这里我是一个个搜索,看那个是电影信息的Headers 发

开源的49款Java 网络爬虫软件

参考地址 搜索引擎 Nutch Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. Nutch的创始人是Doug Cutting,他同时也是Lucene.Hadoop和Avro开源项目的创始人. Nutch诞生于2002年8月,是Apache旗下的一个用Java实现... JAVA爬虫 WebCollector 爬虫简介: WebCollector是一个无须配置.便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只

IT忍者神龟之Java网络爬虫回顾

Java的网络爬虫技术,发现网络爬虫技术首先分为以下几个步骤: 1.打开网页链接 2.把网页代码用一个BufferedReader存放 以下是我做的一个代码实例: 在学习网络爬虫的过程中首先要导入两个包:htmllexer.jar,htmlparser.jar public static void main(String[] args) { try { URL url = new URL("http://www.baidu.com"); HttpURLConnection httpur

【转】44款Java 网络爬虫开源软件

原帖地址 http://www.oschina.net/project/lang/19?tag=64&sort=time 极简网络爬虫组件 WebFetch WebFetch 是无依赖极简网页爬取组件,能在移动设备上运行的微型爬虫. WebFetch 要达到的目标: 没有第三方依赖jar包 减少内存使用 提高CPU利用率 加快网络爬取速度 简洁明了的api接口 能在Android设备上稳定运行 小巧灵活可以方便集成的网页抓取组件 使用...更多WebFetch信息 开源爬虫框架 Guozhong