溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

java 爬蟲詳解及簡(jiǎn)單實(shí)例

發(fā)布時(shí)間:2020-10-19 12:58:16 來源:腳本之家 閱讀:139 作者:飯飯_fan 欄目:編程語(yǔ)言

Java爬蟲

一、代碼

爬蟲的實(shí)質(zhì)就是打開網(wǎng)頁(yè)源代碼進(jìn)行匹配查找,然后獲取查找到的結(jié)果。

打開網(wǎng)頁(yè):

URL url = new URL(http://www.cnblogs.com/Renyi-Fan/p/6896901.html);

讀取網(wǎng)頁(yè)內(nèi)容:

BufferedReader bufr = new BufferedReader(new InputStreamReader(url.openStream()));

正則表達(dá)式進(jìn)行匹配:

tring mail_regex = "\\w+@\\w+(\\.\\w+)+";

儲(chǔ)存結(jié)果:

List<String> list = new ArrayList<String>();

/*
* 獲取
* 將正則規(guī)則進(jìn)行對(duì)象的封裝。
* Pattern p = Pattern.compile("a*b");
* //通過正則對(duì)象的matcher方法字符串相關(guān)聯(lián)。獲取要對(duì)字符串操作的匹配器對(duì)象Matcher .
* Matcher m = p.matcher("aaaaab");
* //通過Matcher匹配器對(duì)象的方法對(duì)字符串進(jìn)行操作。
* boolean b = m.matches();
*/

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Spider {

  public static void main(String[] args) throws IOException {
//    List<String> list = getMails();
//    for(String mail : list){
//      System.out.println(mail);
//    }
  
    List<String> list = getMailsByWeb();
    for(String mail : list){
      System.out.println(mail);
    }
  }

  public static List<String> getMailsByWeb() throws IOException{
    //1,讀取源文件。
    //URL url = new URL("http://192.168.1.100:8080/myweb/mail.html");
    //URL url = new URL("http://localhost:8080/SecondWeb/index.jsp");
    URL url = new URL("http://www.cnblogs.com/Renyi-Fan/p/6896901.html");

    BufferedReader bufr = new BufferedReader(new InputStreamReader(url.openStream()));


    //2,對(duì)讀取的數(shù)據(jù)進(jìn)行規(guī)則的匹配。從中獲取符合規(guī)則的數(shù)據(jù).
    String mail_regex = "\\w+@\\w+(\\.\\w+)+";

    List<String> list = new ArrayList<String>();

    Pattern p = Pattern.compile(mail_regex);
    String line = null;

    while((line=bufr.readLine())!=null){

      Matcher m = p.matcher(line);
      while(m.find()){
        //3,將符合規(guī)則的數(shù)據(jù)存儲(chǔ)到集合中。
        list.add(m.group());
      }

    }
    return list;
  }

  public static List<String> getMails() throws IOException{
    //1,讀取源文件。
    BufferedReader bufr = new BufferedReader(new FileReader("c:\\mail.html"));


    //2,對(duì)讀取的數(shù)據(jù)進(jìn)行規(guī)則的匹配。從中獲取符合規(guī)則的數(shù)據(jù).
    String mail_regex = "\\w+@\\w+(\\.\\w+)+";

    List<String> list = new ArrayList<String>();

    Pattern p = Pattern.compile(mail_regex);
    String line = null;

    while((line=bufr.readLine())!=null){

      Matcher m = p.matcher(line);
      while(m.find()){
        //3,將符合規(guī)則的數(shù)據(jù)存儲(chǔ)到集合中。
        list.add(m.group());
      }

    }
    return list;
  }
}

二、運(yùn)行結(jié)果

abc1@sina.com.cn
1@1.1

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI