package mytest;import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;public class RetrivePage {
private static HttpClient httpClient = new HttpClient();
// 设置代理服务器
static{
//设置代理服务器的IP地址和端口
// httpClient.getHostConfiguration().setProxy("127.0.", 8080);
}
public static boolean downloadPage(String path) throws HttpException,
IOException {
InputStream input = null;
OutputStream output = null;
// 得到post方法
PostMethod postMethod = new PostMethod(path);
//设置post方法的参数
NameValuePair[] postData = new NameValuePair[2];
postData[0] = new NameValuePair("name","lietu");
postData[1] = new NameValuePair("password","******");
postMethod.addParameters(postData);
//执行,反悔状态码
int statusCode = httpClient.executeMethod(postMethod);
//针对状态码进行处理(简单起见,只处理返回值为200的状态码)
if(statusCode == HttpStatus.SC_OK){
input = postMethod.getResponseBodyAsStream();
//得到文件名
int ind = path.lastIndexOf('/')+1;
String filename = path.substring(0,path.lastIndexOf('/')+1);
//获得文件输出流
output = new FileOutputStream(filename);
//输出到文件
int tempByte = -1;
while((tempByte = input.read()) > 0){
output.write(tempByte);
}
//关闭输入输出流
if(input != null){
input.close();
}
if(output != null){
output.close();
}
return true;
}
return false;
} /**
* 测试
* @param args
*/
public static void main(String[] args) {
// 抓去 lietu首页,输出
try{
RetrivePage.downloadPage("http://bbs.it168.com/");
}catch (HttpException e) {
// TODO: handle exception
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}大侠们你们好我想自己动手做一个类似网页爬虫的小程序,在百度上搜了一个文档
参考他们的代码,但是却行不通。
问题出在 获得文件输出流 的那句代码上,请问该怎么解决这个问题啊?
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;public class RetrivePage {
private static HttpClient httpClient = new HttpClient();
// 设置代理服务器
static{
//设置代理服务器的IP地址和端口
// httpClient.getHostConfiguration().setProxy("127.0.", 8080);
}
public static boolean downloadPage(String path) throws HttpException,
IOException {
InputStream input = null;
OutputStream output = null;
// 得到post方法
PostMethod postMethod = new PostMethod(path);
//设置post方法的参数
NameValuePair[] postData = new NameValuePair[2];
postData[0] = new NameValuePair("name","lietu");
postData[1] = new NameValuePair("password","******");
postMethod.addParameters(postData);
//执行,反悔状态码
int statusCode = httpClient.executeMethod(postMethod);
//针对状态码进行处理(简单起见,只处理返回值为200的状态码)
if(statusCode == HttpStatus.SC_OK){
input = postMethod.getResponseBodyAsStream();
//得到文件名
int ind = path.lastIndexOf('/')+1;
String filename = path.substring(0,path.lastIndexOf('/')+1);
//获得文件输出流
output = new FileOutputStream(filename);
//输出到文件
int tempByte = -1;
while((tempByte = input.read()) > 0){
output.write(tempByte);
}
//关闭输入输出流
if(input != null){
input.close();
}
if(output != null){
output.close();
}
return true;
}
return false;
} /**
* 测试
* @param args
*/
public static void main(String[] args) {
// 抓去 lietu首页,输出
try{
RetrivePage.downloadPage("http://bbs.it168.com/");
}catch (HttpException e) {
// TODO: handle exception
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}}大侠们你们好我想自己动手做一个类似网页爬虫的小程序,在百度上搜了一个文档
参考他们的代码,但是却行不通。
问题出在 获得文件输出流 的那句代码上,请问该怎么解决这个问题啊?
解决方案 »
- 求FCKeditor在Java中使用的详细设置的文章
- 我的世界观
- SSH问题
- Tomcat下正常运行的Struts框架应用正常执行,但在WebSphere下无法部署,求解!!!
- JSP连接数据库问题?
- JAVA 抢购实现问题 急!!!!!!!!!!!!!!!!
- 谁可以告诉我JSP和ASP之间的优缺点?
- 不知道网址秀(www.wzxiu.com)是怎么在windows2000的右键菜单中增加菜单项的?
- jboss中的client目录的jar文件
- 求助!将外部数据导入到oracle中的问题!
- 求一个正则表达式...谢谢
- 懂得flex和工作流的大侠来指点下...关于java中自定义表单和工作流程的问题
另外这样也是把网址上面网页代码复制到本地,没有保存什么文件,不知道楼主是不是要达到这个目的。
NameValuePair[] postData = new NameValuePair[2];
postData[0] = new NameValuePair("name","lietu");
postData[1] = new NameValuePair("password","******");
postMethod.addParameters(postData);