当前位置:编程学习 > JAVA >>

java写的一个抓取网页程序,输入输出异常,就高手解决

源代码:
import java.io.*;
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("10.110.0.52", 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", "baidu");
postData[1] = new NameValuePair("password", "*****");
postMethod.addParameters(postData);
// 执行,返回状态码
int statusCode = httpClient.executeMethod(postMethod);
// 针对状态码进行处理(简单起见,只处理返回值为200 的状态码)
if (statusCode == HttpStatus.SC_OK)
{
input = postMethod.getResponseBodyAsStream();
// 得到文件名
String filename = path.substring(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;
}

/**
 * 测试代码
 */
public static void main(String[] args)
{
// 抓取lietu 首页,输出
try
{
RetrivePage.downloadPage("http://www.baidu.com/");
}
catch (HttpException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
异常信息:
java.io.FileNotFoundException: 
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at RetrivePage.downloadPage(RetrivePage.java:39)
at RetrivePage.main(RetrivePage.java:68)
--------------------编程问答--------------------
String filename = path.substring(path.lastIndexOf('/') +1);
// 获得文件输出流
output = new FileOutputStream(filename);

你传入的path : "http://www.baidu.com/"
那 filename = ? --------------------编程问答--------------------

System.out.println(getURLContent("http://www.baidu.com","gbk"));



public static String getURLContent(String urlString, String encoding) {
if (urlString == null || "".equals(urlString.trim()))
return null;
StringBuffer content = new StringBuffer();
try {
URL url = new URL(urlString);// 新建URL对象
InputStream in = new BufferedInputStream(url.openStream());
InputStreamReader theHTML = new InputStreamReader(in,
encoding != null ? encoding : "gb2312");
int c;
while ((c = theHTML.read()) != -1) {
content.append((char) c);
}
}
catch (MalformedURLException e) {// 处理异常
System.err.println(e);
} catch (IOException e) {
System.err.println(e);
}
return content.toString();
}
--------------------编程问答-------------------- String filename = path.substring(path.lastIndexOf('/') +1);
这句话是什么意思啊?那filename怎么给定呢? --------------------编程问答-------------------- (MalformedURLException 是什么异常
补充:Java ,  Java SE
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,