`
GhostWolf
  • 浏览: 312408 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

httpclient 获取到网页内容乱码问题

阅读更多
最近在爬一些页面 碰到解析的内容有乱码 最后这个方法解决了这个乱码问题
public static String getHTMLByDeCode(String url, String... params) throws Exception {
		DefaultHttpClient httpClient = new DefaultHttpClient();
		int index = 0;
		if(ipPortList.size() != 0){
			index = (int) (Math.random() * ipPortList.size() );
			String ipPort = ipPortList.get(index);
			if(!StringUtil.isEmpty(ipPort))
			{
				logger.debug(index+">>>"+ipPort);
				String[] ipPortResult = ipPort.split(":");
				HttpHost proxy = new HttpHost(ipPortResult[0], Integer.parseInt(ipPortResult[1]));//设置代理ip
				httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
			}
		}
		HttpProtocolParams.setUserAgent(httpClient.getParams(),"Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.9) Gecko/20100315 Firefox/3.5.9");
		String charset = "UTF-8";
		if (null != params && params.length >= 1) {
			charset = params[0];
		}
		HttpGet httpget = new HttpGet();
		String content = "";
		try{
			httpget.setURI(new java.net.URI(url));
			HttpResponse response = httpClient.execute(httpget);
			HttpEntity entity = response.getEntity();
			if (entity != null) {
				// 使用EntityUtils的toString方法,传递默认编码,在EntityUtils中的默认编码是ISO-8859-1
				content = EntityUtils.toString(entity, charset);
				httpget.abort();
				httpClient.getConnectionManager().shutdown();
			}
		}
		catch(Exception e){
			if(ipPortList.size() != 0)
				ipPortList.remove(index);
			
			e.printStackTrace();
			logger.debug("get proxy again!!!!");
			getHTMLByDeCode(url,params);
		}
		return content;
	}



参考网址:
http://dh189.iteye.com/blog/732111
http://mhqawjh.iteye.com/blog/473450
分享到:
评论

相关推荐

    使用HttpClient获取网页html源代码.zip

    在这个名为"使用HttpClient获取网页html源代码.zip"的压缩包中,包含了一个简单的示例项目——WebDataShow,用于演示如何使用HttpClient获取网页HTML。 首先,我们需要导入Apache HttpClient库。在Android Studio中...

    HttpClient以及获取页面内容应用

    1.6.1发送get请求获取网页内容 HttpClient client = new HttpClient(); //设置代理服务器地址和端口 //client.getHostConfiguration().setProxy("proxy_host_addr",proxy_port); //使用GET方法,如果服务器...

    Android例子源码使用HttpClient获取网页html源代码.zip

    总结来说,这个例子旨在帮助开发者了解如何在Android环境中使用HttpClient和URLConnection获取远程网页的HTML源代码,同时展示了在GBK编码环境下的处理方式。对于初学者来说,这是一个很好的起点,可以帮助他们理解...

    使用HttpClient获取网页html源代码

    首先,我们导入所需的库。...以上就是使用HttpClient获取网页HTML源代码的基本过程和相关知识点。在实际开发中,还需要考虑错误处理、异步请求、性能优化等方面的问题,以提高应用的稳定性和效率。

    解决了中文乱码的http的get和post请求demo

    首先,我们需要理解中文乱码问题产生的原因。当HTTP请求发送含有中文字符的数据时,如果编码格式不一致或未正确指定,接收端就可能无法正确解码,从而导致乱码。HTTP协议本身并不规定字符编码,而是依赖于Content-...

    HttpClient学习笔记

    例如,你可以用它来模拟用户登录、获取网页内容、提交表单数据等操作。 六、常见问题与解决方案 1. **连接关闭问题**:当HttpClient的连接管理策略不当,可能导致过多的打开连接,需合理设置连接池大小和超时时间。...

    解决网爬工具爬取页面信息出现乱码的问题_asp.net技巧.doc

    乱码通常是由于在处理网页内容时使用了不正确的字符编码,导致原本正常的字符无法正确显示。本文将详细介绍如何解决这个问题,并提供相关的解决方案。 首先,我们需要理解网页编码的基本原理。网页的编码通常由两个...

    网页提取源代码

    创建一个HttpClient对象,然后调用其GetAsync方法,传入目标URL,即可获取网页内容。 3. **字符编码处理**:网页源代码可能存在乱码问题,这通常与网页的字符编码有关。获取网页内容后,需要正确解析其编码。通常,...

    C#获取网页编码—总结.pdf

    【C#获取网页编码】是编程中常见的任务之一,尤其对于网络爬虫或者数据分析来说,正确识别和处理网页编码至关重要。网页编码决定了字符在计算机内存和屏幕上的显示方式,如果处理不当,可能会出现乱码,影响信息的...

    Java获取网页数据步骤方法详解

    这个过程主要包括使用HttpClient请求网页、获取网页源码、查看源码是否有需要提取的数据、对源码进行拆解、获取需要的数据对自己创建的对象赋值、数据提取保存等步骤。 第一步:通过HttpClient请求到达某网页的url...

    c# 提取网页源码

    在IT行业中,提取网页源码是...在C#中,我们可以使用`HttpClient`类来发送HTTP请求,获取网页内容。例如: ```csharp using System.Net.Http; using System.Threading.Tasks; HttpClient client = new HttpClient(); ...

    java实现新浪微博抓取关注和粉丝的课程设计报告

    1. 模拟登录新浪微博网站,获取登录后才能访问的页面; 2. 解析页面内容,提取关注和粉丝列表的URL链接; 3. 对每个链接发起请求,获取用户的具体信息; 4. 将获取的数据进行清洗和处理,保存到CSV文件中。 **详细...

    网络爬虫所用的jar

    10. **编码与解码**:HttpClient支持各种字符编码,确保正确处理非ASCII字符,防止乱码问题。 在实际开发中,除了HttpClient,网络爬虫可能还需要其他JAR库,如Jsoup用于解析HTML,Jackson或Gson用于处理JSON数据,...

    Amazon.rar_amazon 爬_java爬虫

    1. **Java爬虫基础**:Java爬虫通常基于HTTP请求库,如Apache HttpClient或OkHttp,发送GET或POST请求获取网页内容。此外,Jsoup库常用于解析HTML文档,提取所需数据。 2. **亚马逊API**:虽然没有明确提及,但爬取...

    使用C#获取网页HTML源码的例子

    本例中,我们主要讲述了使用C#语言和.NET框架中的WebClient类来获取网页HTML源码的过程,并重点解决了中文乱码的问题,涉及了GB2312和UTF-8这两种常见编码格式。 首先,我们创建了一个WebClient实例,它是一个简单...

    基于HttpClient的国外专利自动采集系统设计与实现 (2012年)

    4. **仿真用户检索国外专利网站的方案**:这指的是系统设计要模拟真实的用户行为,比如搜索、浏览和下载专利信息,以便能够在不违反网站条款的前提下,自动化地从国外专利网站获取数据。 5. **自动采集国外专利数据...

    htmlparser抓取论坛帖子内容的代码

    记得在解析之前,先设置解析器的编码,以防止乱码问题: ```java Parser parser = new Parser(new StringReader(htmlSource), "UTF-8"); ``` 4. **处理异常和优化** 在实际使用中,由于网页结构的复杂性,可能...

    C#简单实现网络爬虫

    1. **发送HTTP请求**:网络爬虫首先需要向目标网站发送HTTP请求,获取网页内容。在C#中,可以使用`HttpClient`类来完成这个任务。例如: ```csharp using System.Net.Http; using System.Threading.Tasks; ...

    网站采集系统

    - **DetectEncoding**: 使用System.Text.Encoding类的DetectEncoding方法,可以自动检测网页的字符编码,避免乱码问题。 9. **爬虫框架** - **Scrapy.NET**: 是.NET平台下的一个基于Scrapy(Python爬虫框架)的...

    网站信息采集器源代码

    1. **网络请求**:使用`System.Net`命名空间中的`HttpClient`类,可以发送HTTP请求到目标网页,获取HTML内容。通过设置不同的HTTP方法(如GET、POST)和请求头,可以模拟不同的用户行为。 2. **HTML解析**:为了从...

Global site tag (gtag.js) - Google Analytics