httpclient 抓取网页(java是一种可以撰写跨平台应用软件的程序设计语言和Java平台 )
优采云 发布时间: 2021-10-27 00:15httpclient 抓取网页(java是一种可以撰写跨平台应用软件的程序设计语言和Java平台
)
Java 是一种面向对象的编程语言,可以编写跨平台的应用软件。是1995年5月推出的Java编程语言和Java平台(即JavaEE、JavaME、JavaSE)的总称。 本站提供基于Java框架struts、spring、hibernate的桌面应用、Web交互和移动端开发技巧和资料等
保持永久学习的心态,你会成为一个优秀的自己,继续从事java知识。
直接上代码,代码中有详细注释
1import org.apache.commons.httpclient.Cookie;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.params.HttpMethodParams;
public class test {
public static void main(String[] args) {
try {
// 先访问首页,得到cookie
// cookie信息自动保存在HttpClient中
HttpClient httpClient = new HttpClient();
PostMethod postMethod = new PostMethod("http://1.lexury2016.sinaapp.com/login");
httpClient.executeMethod(postMethod);
// 携带cookie访问登录网面
postMethod = new PostMethod("http://1.lexury2016.sinaapp.com/login");
// 设置登录的账号与密码
NameValuePair[] nameValuePairs = { new NameValuePair("stucid", "2013150091"),
new NameValuePair("stupassword", "ab1234") };
postMethod.setRequestBody(nameValuePairs);
// 设置请求编码为UTF-8
postMethod.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");
// httpclient访问登录网页
httpClient.executeMethod(postMethod);
// 得到响应文本
byte[] bytes = postMethod.getResponseBody();
String html = new String(bytes);
System.out.println(postMethod.getStatusCode());
// 输出为302,也就是说网页发生了重定向
// 得到重定向后的网页
Header redirect = postMethod.getResponseHeader("location");
String url = redirect.getValue();
// 使用get请求,访问登陆后的页面
GetMethod getMethod = new GetMethod(url);
httpClient.executeMethod(getMethod);
// 得到返回文本
bytes = getMethod.getResponseBody();
html = new String(bytes);
System.out.println(html);
} catch (Exception e) {
e.printStackTrace();
}
}
}