To: sswater(光杆兵) 使用 URLEncoder.encode 时,选择 utf-8 编码,这个我选择了,不行 url = new String(url.getBytes("utf-8"), "iso-8859-1");我也曾经测试过,但出来的是全部的结果集,不是正常在页面中和IE浏览一样的结果。 To: akirya(坏[其实偶不是什么所谓的坏人]) 你给的编码和我自己的编码没有区别呀?有没有其他的解决方法呀!
URL url = new URL("http://www.worldmetals.com.cn/search/metsearch.jsp?" + URLEncoder.encode("search=(铁矿石)%20and%20docchannel=(36)", "UTF-8"));
To sswater(光杆兵)试过呀,可惜没用,有时间你能帮我调试一下吗,程序在上面,真的很奇怪 下面这个地址直接在IE中也能浏览 http://www.worldmetals.com.cn/search/metsearch.jsp?search=%28%CC%FA%BF%F3%CA%AF%29+and+docchannel%3D%2836%29 但放在java中去抓取就不可以了??多谢了
to 楼上: 是应该只对参数进行编码,但我试了一下也不行 可能有其他方面的限制,比如请求的header
To CrazyGou() 分析头文件为: HTTP/1.1 200 OK Date: Thu, 24 May 2007 03:42:59 GMT Server: IBM_HTTP_SERVER/1.3.19.3 Apache/1.3.20 (Win32) Set-Cookie: JSESSIONID=0000OQ1AS0ENLEHAPX2IXG4VCQY:vdebn6i3;Path=/ Cache-Control: no-cache="set-cookie,set-cookie2" Expires: Thu, 01 Dec 1994 16:00:00 GMT Transfer-Encoding: chunked Content-Type: text/html;charset=gb2312 Content-Language: zh开始怀疑是chunked的问题,但发现http://www.worldmetals.com.cn/search/metsearch.jsp?search=(china)%20and%20docchannel=(36)能正常抓取所以怀疑是中文传递的问题,对里面的url进行多次转码,可还是抓不到想要的结果集
url = new String(url.getBytes("utf-8"), "iso-8859-1");其中的原理参考:
http://www.regexlab.com/zh/encoding.htm
http://www.worldmetals.com.cn/search/metsearch.jsp?search=(铁矿石)%20and%20docchannel=(36)这种方式编码
sswater(光杆兵)
使用 URLEncoder.encode 时,选择 utf-8 编码,这个我选择了,不行
url = new String(url.getBytes("utf-8"), "iso-8859-1");我也曾经测试过,但出来的是全部的结果集,不是正常在页面中和IE浏览一样的结果。
To:
akirya(坏[其实偶不是什么所谓的坏人])
你给的编码和我自己的编码没有区别呀?有没有其他的解决方法呀!
import java.net.URLEncoder;
public class Test {
public static void main(String[] args) throws Exception
{
try
{
String url = "";
url = "http://www.worldmetals.com.cn/search/metsearch.jsp?" + URLEncoder.encode("search=(铁矿石) and docchannel=(36)", "UTF-8");
Test testWebConn = new Test();
testWebConn.getHtml(url);
}
catch(Exception ex)
{
}
}
public void getHtml(String url)
{
try
{
String sCurrentLine; String sTotalString; sCurrentLine=""; sTotalString=""; java.io.InputStream l_urlStream; System.out.println(url);
java.net.URL l_url = new java.net.URL(url); java.net.HttpURLConnection l_connection = (java.net.HttpURLConnection) l_url.openConnection(); l_connection.connect();
//l_urlStream = l_url.openStream();
l_urlStream = l_connection.getInputStream();
java.io.BufferedReader l_reader = new java.io.BufferedReader(new java.io.InputStreamReader(l_urlStream)); while ((sCurrentLine = l_reader.readLine()) != null) {
if(sCurrentLine.indexOf("共命中")>0&&sCurrentLine.indexOf("篇文章")>0)
{
System.out.println(sCurrentLine);
break;
}
//sTotalString+=sCurrentLine+"\n"; }
System.out.println(sTotalString);
}
catch(Exception ex)
{
System.out.println(ex.toString());
}
}
}
下面这个地址直接在IE中也能浏览
http://www.worldmetals.com.cn/search/metsearch.jsp?search=%28%CC%FA%BF%F3%CA%AF%29+and+docchannel%3D%2836%29
但放在java中去抓取就不可以了??多谢了
是应该只对参数进行编码,但我试了一下也不行
可能有其他方面的限制,比如请求的header
HTTP/1.1 200 OK
Date: Thu, 24 May 2007 03:42:59 GMT
Server: IBM_HTTP_SERVER/1.3.19.3 Apache/1.3.20 (Win32)
Set-Cookie: JSESSIONID=0000OQ1AS0ENLEHAPX2IXG4VCQY:vdebn6i3;Path=/
Cache-Control: no-cache="set-cookie,set-cookie2"
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Transfer-Encoding: chunked
Content-Type: text/html;charset=gb2312
Content-Language: zh开始怀疑是chunked的问题,但发现http://www.worldmetals.com.cn/search/metsearch.jsp?search=(china)%20and%20docchannel=(36)能正常抓取所以怀疑是中文传递的问题,对里面的url进行多次转码,可还是抓不到想要的结果集
accept-language zh-cn