`
jsczxy2
  • 浏览: 1275091 次
  • 性别: Icon_minigender_1
  • 来自: 常州
文章分类
社区版块
存档分类
最新评论

httpclient自动获取页面编码设置进行字符编码,使httpclient适用所有网页抓取不乱码

阅读更多

 

//生成HttpMethod的方法就不举例了,网上很多,这里只是写明如何使得Httpclient适用所有编码的网页抓取

	/**
	 * 获取页面html内容
	 * @param method
	 * @param methodType
	 * @return String
	 * @throws UnsupportedEncodingException
	 * @throws IOException
	 */
	private static String readInputStream(HttpMethod method) throws Exception{
		String charset = "UTF-8";
		if(method instanceof PostMethod){
			charset = ((PostMethod)method).getResponseCharSet();
		}else{
			charset = ((GetMethod)method).getResponseCharSet();
		}
		byte[] bytes = method.getResponseBody();
		String body = new String(bytes,"UTF-8");
		charset = getCharSetByBody(body,charset);
		return new String(bytes,charset);
	}
	
	/**
	 * 根据页面body获取字符编码
	 * @param html
	 * @param charset
	 * @return
	 */
	private static String getCharSetByBody(String html,String charset){
		Document document = parseJSoupDocumentFromHtml(html, Constants.parseBaseUri);
		Elements elements = document.select("meta");
		for(Element metaElement : elements){
			if(metaElement!=null && StringUtils.isNotBlank(metaElement.attr("http-equiv")) && metaElement.attr("http-equiv").toLowerCase().equals("content-type")){
				String content = metaElement.attr("content");
				charset = getCharSet(content);
				break;
			}
		}
		return charset;
	}
	
	/**
	 * 正则获取字符编码
	 * @param content
	 * @return
	 */
	private static String getCharSet(String content){
		String regex = ".*charset=([^;]*).*";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(content);
		if(matcher.find())
			return matcher.group(1);
		else
			return null;
	}
分享到:
评论
1 楼 kewangwu 2014-03-26  
你好,有完整代码?parseJSoupDocumentFromHtml()、getCharSetByBody()都没有啊

相关推荐

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

    在Android开发中,有时我们需要从网络上获取网页的HTML源代码,以便进行数据抓取或者模拟用户交互。HttpClient是Java中一个常用的HTTP客户端库,它允许我们方便地发送HTTP请求并接收响应。在这个名为"使用HttpClient...

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

    在Android开发中,有时我们需要从网络获取HTML源代码来实现某些功能,比如网页抓取、网页数据解析等。本例子提供了使用HttpClient和URLConnection两种方式来实现这个目标。这两种方法都是Android SDK内置的网络访问...

    使用HttpClient获取网页html源代码

    在Android开发中,有时我们需要从网络上获取网页的HTML源代码,以便进行数据抓取或者分析。HttpClient是一个常用的Java库,适用于实现HTTP客户端功能,它也被广泛应用在Android中。本篇将详细介绍如何使用HttpClient...

    HttpClient应用实例2

    这个库广泛用于自动化测试、数据抓取和Web服务的交互。本实例主要关注如何解决在使用HttpClient进行文件上传时可能出现的乱码问题。 在HttpClient中,乱码问题通常出现在两个方面:请求参数的编码和响应内容的解码...

    java模拟http请求登陆抓取海投网信息

    在Java编程中,模拟HTTP请求是一项常见的任务,尤其在网页抓取、自动化测试以及网络数据获取等场景下。本项目涉及的关键技术点是利用HTTP客户端库进行登录操作,并抓取海投网的数据,随后将这些信息存储到MySQL...

    网页提取源代码

    网页提取源代码是一个常见的任务,尤其对于数据抓取、网页分析和自动化测试等领域。在VS2008环境下,我们可以使用各种编程语言如C#或VB.NET来实现这个功能。以下是一些关于如何进行网页源代码提取的关键知识点: 1....

    网络爬虫所用的jar

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

    java实现模拟登录网站最全的资料

    Java实现模拟登录网站是一项常见的任务,特别是在自动化测试、数据抓取和网络爬虫等领域。以下是一些关于这个主题的关键知识点: 1. **网络请求库**:在Java中,`HttpURLConnection`是内置的HTTP客户端,但为了更...

    java网页下载的四种不同实现

    在Java编程中,下载网页是一项常见的任务,尤其对于网络爬虫和数据抓取项目来说更是必不可少。本篇文章将深入探讨四种不同的Java实现方法,帮助初学者理解如何在处理中文乱码问题的同时,有效地下载网页内容。 一、...

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

    在进行Web开发时,常常需要根据URL获取网页的HTML源码,以便于进一步的分析或数据抓取。C#作为.NET框架下的一种编程语言,提供了丰富的类库来帮助开发者实现这一需求。本例中,我们主要讲述了使用C#语言和.NET框架中...

    nutch无法下载中文文件的问题

    首先,Nutch 在抓取网页时,默认使用的是 ASCII 编码,这可能导致对包含中文字符的 URL 处理不当。在中文环境下,URL 必须用 UTF-8 编码,否则可能会出现乱码或无法正确解析的情况。要解决这个问题,你需要在 Nutch ...

    网站采集系统

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

    基于java爬取股票数据的一个项目.zip

    10. **数据清洗与预处理**:抓取的数据可能存在乱码、缺失值等问题,需要进行数据清洗,例如去除空格、转换编码、填充缺失值等。 11. **数据可视化**:可能还涉及到将抓取的数据进行可视化展示,如使用JFreeChart或...

    .net_Web数据挖掘.rar0527

    C#提供了丰富的字符串操作方法和正则表达式支持,可以有效处理乱码、非标准格式等问题。对于大规模数据,可利用LINQ(Language Integrated Query)进行高效查询和过滤。 结构级挖掘涉及对网页结构的理解和解析。C#...

    crawler:学习爬取并添加中文注释

    在IT行业中,爬虫是一种广泛使用的工具,用于自动地从互联网上抓取数据。本项目以"crawler:学习爬取并添加中文注释"为主题,旨在帮助初学者深入理解爬虫工作原理,并通过实践增强其Java编程技能。下面将详细探讨相关...

    social-network-http-crawler:下载,提取和合并社交网络信息

    10. **合规性与道德**:在进行网络爬虫时,必须遵守网站的robots.txt规则,尊重网站的版权,不进行非法的数据抓取,这是开发者的道德底线。 总的来说,“social-network-http-crawler”项目涉及到了网络爬虫的多个...

    浅谈C#中HttpWebRequest与HttpWebResponse的使用方法

    - 编码处理:在读取网页内容时,需要指定正确的字符编码,否则可能导致乱码。 - Cookie管理:如果需要处理Cookie,可以使用CookieContainer类与HttpWebRequest关联,以保持会话状态。 6. **扩展应用**: - 使用...

Global site tag (gtag.js) - Google Analytics