JAVA學習筆記(一):一個小爬蟲的例子


1.import java.io.*;  

java.io.*不是一個文件,而是一組類。它是在java.io包里的所有類,*是通配符,比如a*.txt代表的就是以a開頭的所有txt文件,“?”是單個詞的通配符,比如a?.txt代表的就是以a開頭而且名字只有兩個字的txt文件

import的作用是:在你寫一個類的時候。里面用到了其他的類,而用到的這個類和你現在寫的這個類不是同一個包里,就需要導入那個類的全名

2.類似於C語言中int main() 的作用

public class main {  
    public static void main(String[] args) {  

3.String

// 定義即將訪問的鏈接  
String url = "http://www.baidu.com";  
// 定義一個字符串用來存儲網頁內容  
String result = "";  

詳見http://www.cnblogs.com/YSO1983/archive/2009/12/07/1618564.html

4.Bufferedreader

// 定義一個緩沖字符輸入流  
BufferedReader in = null;

 BufferedReader類用於緩沖讀取字符,將字節流封裝成BufferedReader對象,然后用readLine()逐行讀入字符流,直到遇到換行符為止(相當於反復調用Reader類對象的read()方法讀入多個字符)

詳見http://blog.csdn.net/caixiexin/article/details/6719482

BufferedReader

BufferedReader 由Reader類擴展而來,提供通用的緩沖方式文本讀取,而且提供了很實用的readLine,讀取一個文本行,從字符輸入流中讀取文本,緩沖各個字符,從而提供字符、數組和行的高效讀取。

一般用法:

 

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));
  String data = null;
  while((data = br.readLine())!=null)
  {
   System.out.println(data); 
  }

 

5.try{}catch(Excpetion e){}finally{}

用來捕捉異常

 catch (Exception e) {  
    System.out.println("發送GET請求出現異常!" + e);  
    e.printStackTrace();  // 將錯誤信息打印出來
}  
// 使用finally來關閉輸入流  
        finally {  
            try {  
                if (in != null) {  
                    in.close();  
                }  
            } catch (Exception e2) {  
                e2.printStackTrace();  
            }  
        }  
在java中.close  是關閉的意思。比如session.close();  意思就是關閉session  同時釋放內存。
還有常用的就是和數據庫的鏈接 connection
在使用完畢之后,也就是一個功能代碼的結尾 ,同時會寫connection.close();釋放內存

6.new

 // 將string轉成url對象  
URL realUrl = new URL(url); 

比如說現在有兩個類,T1和T2

T1 a=new T1();

T2 b=new T1();

就是new出兩個T1的實例;你可以把T1看成是一個模子,new T1();就是按照這個模子做一個東西出來,new幾次就做幾個,所以做出來的東西並不是一個東西,但是它們很像。
T2 b=new T1();如果T1繼承自T2的話那么程序就正確,否則就是錯誤代碼。如果正確的話,T2 b就是聲明要創建的b是T2類型,而new T1();就是創建了一個T1類型賦值給b,因為T1是T2的子類所以是允許的,如果T1和T2里有同名同參同返回方法那么調用的是T1里的。
7.Connection
// 初始化一個鏈接到那個url的連接  
URLConnection connection = realUrl.openConnection();  
public URLConnection openConnection()
throws IOException
返回一個 URLConnection 對象,它表示到 URL 所引用的遠程對象的連接。
每次調用此 URL 的協議處理程序的 openConnection 方法都打開一個新的連接。

如果 URL 的協議(例如,HTTP 或 JAR)存在屬於以下包或其子包之一的公共、專用 URLConnection 子類:java.langjava.iojava.utiljava.net,返回的連接將為該子類的類型。例如,對於 HTTP,將返回 HttpURLConnection,對於 JAR,將返回 JarURLConnection。
返回:
到該 URL 的 URLConnection。
// 開始實際的連接  
connection.connect();  

8.初始化 BufferedReader

// 初始化 BufferedReader輸入流來讀取URL的響應  
in = new BufferedReader(new InputStreamReader( connection.getInputStream()));  

InputStreamReader 類

是字節流通向字符流的橋梁,封裝了InputStream在里頭, 它以較高級的方式,一次讀取一個一個字符以文本格式輸入 / 輸出,可以指定編碼格式;

一般用法:

 

InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt"));
   while((ch = isr.read())!=-1)
   {
    System.out.print((char)ch); 
   }

 

示例如下

public static String getHtmlSource( String  url) throws MalformedURLException, IOException {
URLConnection uc = new URL(url).openConnection();
uc.setConnectTimeout(10000);
uc.setDoOutput(true);
InputStream in = new BufferedInputStream(uc.getInputStream());
InputStreamReader rd = new InputStreamReader(in,"gb2312");
int c = 0;
StringBuffer temp = new StringBuffer();
while((c = rd.read())!= -1){
       temp.append((char)c);
}
in.close();
return temp.toString();
}

9.抓取數據並存儲

// 用來臨時存儲抓取到的每一行的數據  
String line;  
while ((line = in.readLine()) != null) {  
    //遍歷抓取到的每一行並將其存儲到result里面  
    result += line;  
}  

10.輸出信息System.out.println

 

public class Test {
 public static void main(String[] args) {
  int x = 5;
  int y = 2;
  int a=5,b=4,c=3;
  System.out.println(x+y+"K");
  System.out.println("abc"+a+b+c+3);
 }

}
結果是:
7K
abc5433

首先,這個跟println輸出規則沒什么關系
這個是跟運算規則和“+”連接符有關
其次x,y,a,b,c都是int型,也就是可用“+”號計算的類型
最后
第一個輸出x+y+"K"
從左到右先計算x+y,結果為7是int類型,這里的"+"號是計算符號,而后“+”號是當字符串連接符號處理所以最后int的7和string類型的“K”連接后生成新的string,“7K”
第二個輸出“abc”+a+b+c+3
也是從左到右計算,因為“abc”是字符串,而后跟“+”號是當字符串連接符號處理,所以是“abc5433”
其后的“+”號都當成了字符串連接符號

總之,當“+”號前后有字符串出現時,就當做字符串連接符號處理了。
例如:
int a=1;
String s="a";
System.out.println(a+s);
輸出"1a"
System.out.println(s+a);
輸出“a1”

而且這種情況就從左到右,依次看“+”號前后有沒有字符串出現就行了。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM