在Java中可以用java.net.URL類對實際的URL進行建模,通過這個類,可以對相應的Web服務器發出請求并且獲得相應的文檔。Java.net.URL類有一個默認的構造函數,使用URL地址作為參數,構造URL對象。
URL pageURL=new URL(path);
之后,可以通過獲得的URL對象來取得網絡流,進而像操作本地文件一樣來操作網絡資源。
InputStream stream=pageURL.openStream();
可以將網頁看作網絡文件,然后按照文件讀取的方式把它讀出來并保存到本地。
一個下載網頁的程序:
package crawler;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.Scanner;
import tool.WriteFile;
public class RetrivePage {
public static String downloadPage(String path) throws IOException{
URL pageURL=new URL(path);
//創建網絡流
Scanner in=new Scanner(new InputStreamReader(pageURL.openStream()));
in.useDelimiter("\\z");//可以用正則表達式分段讀取網頁
//讀取網頁內容
StringBuilder pageBuffer=new StringBuilder();
while(in.hasNext()){
pageBuffer.append(in.next());
}
in.close();
//返回網頁內容
return pageBuffer.toString();
}
public static void main(String[] args) throws IOException {
String path="http://www.essence.com.cn/essence/news/NewsContent.jsp?docId=29499442";
String content=RetrivePage.downloadPage(path);
System.out.println(content);
String filePath="D:\\lucene\\data\\news.txt";
WriteFile.writeFile(filePath, content);
}
}