原始问题如下:
http://topic.csdn.net/u/20080902/02/a6445aa1-2e6b-45c6-a47c-79009718c0fa.htmlhtml网页的内容大致如下:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type;charset=gb2312" />
- <title>CSDN首页 </title>
- ...
- </head>
- <body>
- .....
- </html>
我使用以下语句抓取类似上面的网页:
- URL url = new URL("http://www.csdn.net");
- HttpURLConnection connection = (HttpURLConnection)url.openConnection();
- String contentType = connection.getHeaderField("Content-Type");
- contentType = connection.getContentType();
无论是哪一句,得到的contentType的值都是text/html,而不包含后面的charset=gb2312,这是为什么?
我注意到一个问题,content="text/html; charset=gb2312"这里,在;和charset之间有一个空格,是否因为这个空格的缘故,而不能得到content-type的准确值
还有没有其他的办法可以得到页面的编码字符集?
回答:
connection.getContentType();
这个需要服务器设置了 ContentType才可以,这个数据在文件头里面,而不是在文件的主体(也就是你看到的html)里面。
所以检测页面类型需要分3步,如果这一步不行,则用下一个
1 看header里面的ContentType,也就是你用的那个方法
2 看 html 里面的 ContentType ,也就是解析html页面
3 对html数据进行自动评估,类似于it里面的自动检测编码类型。
一段典型的返回信息的Header数据
HTTP/1.1 200 OK
Date: Mon, 01 Sep 2008 23:13:31 GMT
Server: Apache/2.2.4 (Win32) mod_jk/1.2.26
Vary: Host,Accept-Encoding
Set-Cookie: JAVA2000_STYLE_ID=1; Domain=www.java2000.net; Expires=Thu, 03-Nov-2011 09:00:10 GMT; Path=/
Content-Encoding: gzip
Transfer-Encoding: chunked
Content-Type: text/html;charset=UTF-8
<html>
。。。。从这里开始是数据的本体
此文收藏于:http://www.java2000.net/p9226
<script type="text/javascript">
</script> <script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript">
</script>
分享到:
相关推荐
### vb-webbrowser获取网页文本 #### 知识点概述 在本篇文章中,我们将深入探讨如何使用Visual Basic(简称VB)中的WebBrowser控件来获取网页的文本内容,而不是简单的HTML源码。此方法适用于那些希望从网页中提取...
根据给定的文件信息,本篇文章将详细介绍如何使用C#语言及.NET框架通过GET方法获取网页的源代码。本文将涵盖以下知识点: 1. **基础知识介绍**:介绍C#与.NET的基本概念及其在Web开发中的应用。 2. **HTTP请求简介*...
GET方法通常用于从服务器获取资源,POST方法用于向服务器提交数据,PUT用于更新已有资源,DELETE用于删除资源。首部字段提供了关于请求的附加信息,比如Accept-Charset指明客户端能接受的字符集,防止编码问题,而...
HTTP(Hyper Text Transfer Protocol)协议是互联网上应用最广泛的一种网络协议,它是用于从万维网服务器传输超文本到本地浏览器的传输协议。这个协议定义了客户端(通常是浏览器)和服务器之间的通信规则,使得信息...
首先,HTTP协议的主要任务是为用户提供浏览网页的能力。当用户在浏览器中输入一个URL并按下回车键时,浏览器作为用户代理(User Agent)会产生一个HTTP GET请求。例如,请求的URL为`...
1. **HTTP协议**:首先,我们需要了解HTTP(超文本传输协议),它是互联网上应用最广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器。获取网页源代码就是向服务器发送一个HTTP GET请求。 2. **...
HTTP(Hypertext Transfer Protocol)是一种用于从Web服务器传输超文本到本地浏览器的应用层协议,其作用原理主要包括三个关键步骤:连接、请求与应答。 #### 1. 连接 在HTTP通信开始之前,客户端(如浏览器)首先...
本实例分享了一个简单的Java程序,用于从指定网页中获取所有链接。通过创建一个名为`HtmlParser`的类,该程序实现了对HTML页面的解析,并提取出`<a>`标签中的`href`属性,即网页链接。 首先,`HtmlParser`类中有一...
它主要用于网页数据的传输,是客户端浏览器和其他网页“服务器”之间请求及应答的标准。所有在万维网上的文件都必须遵循这一标准。 #### HTTP与TCP的关系 HTTP协议是基于TCP协议之上的。TCP协议(Transmission ...
当收到请求时,它会从请求中获取参数,设置响应内容类型为HTML,并返回一个简单的网页。 此外,理解HTTP状态码也很关键。常见的状态码有200(成功)、404(未找到)、500(内部服务器错误)等,它们提供了请求处理...
### Web应用安全:HTTP协议GET和POST的使用区别实验 #### 实验背景及目标 本实验旨在通过实际操作深入理解HTTP协议中POST方法的工作机制及其与GET方法的区别。实验将利用Firefox浏览器的Firebug插件以及Wireshark...
在Android开发中,获取网页源代码是常见的需求,例如用于数据抓取或解析网页结构。本文将详细讲解如何在Android应用中以GET方式读取网页源代码,并解决可能出现的乱码问题。 首先,我们需要理解HTTP协议中的GET方法...
### JS获取客户端IP地址、MAC和主机名的7个方法详解 #### 一、使用JS获取客户端IP的方法 ##### 方法一:使用ActiveX获取IP(仅适用于IE浏览器) 这种方法依赖于`ActiveXObject`来实现,因此只能在允许运行ActiveX...
GET用于获取资源,POST用于向服务器提交数据,而HEAD则用来获取头信息,不返回实际内容。Web采用客户端/服务器模型,用户通过浏览器作为客户端向服务器请求数据,服务器响应并返回相应的网页内容。 2. 静态网页 ...
在Android开发中,获取网页源代码是常见的需求,例如用于数据抓取或解析网页内容。在本教程中,我们将深入探讨如何在Android应用中正确地以GET方式读取网页源代码,并解决可能出现的编码错误导致的乱码问题。 首先...
首先,WWW服务是互联网的核心部分,它基于HTTP(Hypertext Transfer Protocol)协议,用于从Web服务器获取并显示网页内容。HTTP是一种无状态的应用层协议,通常采用客户端-服务器模型。实验中通过访问特定网站,分析...
- **从服务器端的角度看**: - 如果没有客户端的请求,服务器端绝不会主动发出响应。 - 服务器端和客户端完成一次通信后,会立即断开连接。 - 服务器端通常只有一个,但客户端可以有无数个,形成一对一或多的关系...
在Java编程中,爬取网页并保存是一项常见的任务,用于获取和分析互联网上的信息。本文将详细介绍两种简单的方法来实现这一目标:使用`java.net.URLConnection`和`org.apache.http.client.HttpClient`。 首先,我们...
在IT领域,网页抓取(Web Scraping)是一项常见的任务,它涉及到从互联网上的网页中提取所需的数据。本文将详细讲解如何使用Java的htmlparser库实现网页抓取,并探讨其核心概念和用法。 首先,从给定的代码示例中...
- 对于从URL获取的内容,可能需要进行编码转换,比如从`InputStreamReader`传入`new String(charset)`,指定字符编码(如UTF-8)。 4. **内容截取**: - 如果需要截取特定部分的内容,可能需要使用字符串操作方法...