作者ciphero (奶油焗蛋饺...:))
看板java
标题[问题] httpClient无法取得网页html的问题
时间Fri Nov 30 00:37:28 2012
最近因为工作上有需要,必须蒐集一些电影资讯
发现开眼电影 (
http://www.atmovies.com.tw/home/ ) 这个网站的资料还不错
所以想利用 httpClient 来撷取资料
直觉上,应该就像当我在网页的搜寻 bar 里面键入想查询的中文片名 keyword,
然後画面上应该就会出现一份符合这个 keyword 的电影清单。
所以我写了如下的 code:
/*--------------------------程式码分隔线--------------------------------*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
public class Test {
public static void main(String[] args) throws Exception {
// 我要查询的关键字
String searchStr = "复仇者联盟";
// 表单 submit 时的 action 程式 (方法为 post)
String searchUrl = "
http://search.atmovies.com.tw/search/search.cfm";
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(searchUrl);
// 设定submit时的各项参数 (type, search_term 都是表单元件的变数名称)
List <NameValuePair> nvps = new ArrayList <NameValuePair>();
nvps.add(new BasicNameValuePair("type", "all"));
nvps.add(new BasicNameValuePair("search_term", searchStr));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
HttpResponse response = httpclient.execute(httpPost);
// 检查一下有没有回传成功
if(response.getStatusLine().getStatusCode() != 200)
System.out.println("Http response error!");
HttpEntity entity = response.getEntity();
BufferedReader in = new BufferedReader(
new InputStreamReader(entity.getContent(), "utf-8"));
// 把网页的 HTML 印出来
String html = null;
while ((html = in.readLine()) != null) System.out.println(html);
}
}
/*--------------------------程式码结束--------------------------------*/
程式的大意是说:
我想要查询符合「复仇者联盟」字串的电影,然後抓出这份清单的 html 内容
虽然 submit 的结果没有异常(status code = 200),但输出却是一片空白 @@~
我有试过把 http header 改成跟浏览器送出的完全相同,但结果还是一样
不晓得各位高手有什麽看法?感谢罗!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 36.227.147.101
※ 编辑: ciphero 来自: 36.227.147.101 (11/30 00:56)
1F:→ gtr99:不要忽略 hidden 栏位的资讯 ex. action=home&fr=search 12/01 18:00
2F:→ ciphero:ㄟ~其实这一点也试过了,仍然不行。我用某些软体去找 12/01 22:01
3F:→ ciphero:所有submit出去的变数与值以及http header,然後以程式 12/01 22:04
4F:→ ciphero:送出完全相同的内容,结果仍然一样。也许只能推测对方的 12/01 22:06
5F:→ ciphero:action程式中做了什麽未知的处理,似乎也无法继续追查了吧 12/01 22:09