[Java] 搜索引擎爬虫,抓取url →→→→→进入此内容的聊天室

来自 , 2019-12-18, 写在 Java, 查看 99 次.
URL http://www.code666.cn/view/73740ea8
  1. package se.robot;
  2.  
  3. import java.io.IOException;
  4. import java.util.LinkedList;
  5. import java.util.List;
  6. import java.util.Queue;
  7. import java.util.regex.Matcher;
  8. import java.util.regex.Pattern;
  9.  
  10. import org.jsoup.Jsoup;
  11. import org.jsoup.nodes.Document;
  12. import org.jsoup.nodes.Element;
  13. import org.jsoup.select.Elements;
  14.  
  15. public class Robot {
  16.  
  17.         // robot url
  18.         private List<String> urlList;
  19.         // cache url
  20.         private Queue<String> urlQueue;
  21.         // define Host
  22.         public final static String HOST = "debugs.tk";
  23.  
  24.         // constructor
  25.         public Robot() {
  26.                 super();
  27.                 // initialization robot's member
  28.                 setUrlList(new LinkedList<String>());
  29.                 setUrlQueue(new LinkedList<String>());
  30.         }
  31.  
  32.         // url
  33.         public List<String> getUrlList() {
  34.                 return urlList;
  35.         }
  36.  
  37.         public void setUrlList(List<String> urlList) {
  38.                 this.urlList = urlList;
  39.         }
  40.  
  41.         // cache
  42.         public Queue<String> getUrlQueue() {
  43.                 return urlQueue;
  44.         }
  45.  
  46.         public void setUrlQueue(Queue<String> urlQueue) {
  47.                 this.urlQueue = urlQueue;
  48.         }
  49.  
  50.         // Legal link
  51.         private boolean isURL(String url) {
  52.                 try {
  53.                         // judge url
  54.                         Pattern pattern = Pattern.compile("^[a-zA-z]+://[^\\s]*");
  55.                         Matcher matcher = pattern.matcher(url);
  56.                         if (matcher.matches()) {
  57.                                 return true;
  58.                         } else {
  59.                                 return false;
  60.                         }
  61.                 } catch (Exception e) {
  62.                         e.printStackTrace();
  63.                         return false;
  64.                 }
  65.         }
  66.  
  67.         // whether the url is belong to host
  68.         public static boolean isHost(String url) {
  69.                 return url.contains(HOST);
  70.         }
  71.  
  72.         // travel all url
  73.         public void traverse(String seed) {
  74.  
  75.                 for (this.getUrlQueue().add(seed); !this.getUrlQueue().isEmpty();) {
  76.                         boolean flag = true;
  77.                         Document document = null;
  78.                         try {
  79.                                 document = Jsoup.connect(seed).timeout(5000).get();
  80.                         } catch (IOException e) {
  81.                                 e.printStackTrace();
  82.                                 // whether connect success
  83.                                 flag = false;
  84.                         }
  85.                         // whether connect success,then select a tag
  86.                         // add these aTag into queue
  87.                         if (flag) {
  88.         // get url
  89.                                 Elements elements = document.select("a[href]");
  90.                                 for (Element e : elements) {
  91.                                         String s = e.attr("abs:href");
  92.                                         // Legal link and belong host
  93.                                         // and url not in list
  94.                                         // then add it
  95.                                         if (isURL(s) && s.contains(HOST)
  96.                                                         && (!getUrlQueue().contains(s))
  97.                                                         && (!getUrlList().contains(s))) {
  98.                                                 this.getUrlQueue().add(s);
  99.                                         }
  100.                                 }
  101.                         }
  102.                         // get head of queue
  103.                         // and set it seed
  104.                         // travel seed it again
  105.                         seed = this.getUrlQueue().poll();
  106.                         this.getUrlList().add(seed);
  107.                         // show information
  108.                         // System.out.println("SIZE:"
  109.                         // + this.getUrlQueue().size() + "---"
  110.                         // + seed + " connect!");
  111.                 }
  112.         }
  113.  
  114.         // public static void main(String[] args) {
  115.         // Robot robot = new Robot();
  116.         // robot.traverse("http://debugs.tk");
  117.         // List<String> list = robot.getUrlList();
  118.         // for (String s : list) {
  119.         // System.out.println(s);
  120.         // }
  121.         // }
  122.  
  123. }
  124. //java/1333

回复 "搜索引擎爬虫,抓取url"

这儿你可以回复上面这条便签

captcha