zoukankan      html  css  js  c++  java
  • Java url爬虫

    java 爬虫抓取

    可以在线编辑java代码的连接 http://www.runoob.com

     1 import java.util.Scanner;
     2 import java.util.ArrayList;
     3 import java.net.*;
     4 public class Spider {
     5     public static void main(String[] args) {
     6         String  url = "http://www.runoob.com";
     7         craweler(url);
     8     }
     9 
    10     public static void craweler(String startingURL) {
    11         int Max_item = 10000; // 爬虫抓取最大条目数
    12         ArrayList<String> listOfPendingURLs=new ArrayList<>();
    13         ArrayList<String> listOfTraversedURLs=new ArrayList<>();
    14         //将起始的URL添加到listOfPendingURLs,然后通过一个while循环重复处理listOfPendingURLs中每一个URL
    15         listOfPendingURLs.add(startingURL);
    16         while(!listOfPendingURLs.isEmpty()&&listOfTraversedURLs.size()<=Max_item) {
    17             //将列表中第一个RUL去除,如果该RUL没有被处理过则对其进行处理
    18             String urlString=listOfPendingURLs.remove(0);
    19             if(!listOfTraversedURLs.contains(urlString)) {
    20                 listOfTraversedURLs.add(urlString);
    21                 System.out.println("url:"+urlString);
    22                 //程序使用foreach循环,将页面中的每个不存在listOfTraversedURLs中的URL添加到listOfPendingURLs中
    23                 for(String s:getSubURLs(urlString)) {
    24                     if(!listOfTraversedURLs.contains(s)) 
    25                         listOfPendingURLs.add(s);
    26                 }
    27 
    28             }
    29         }
    30     }
    31 
    32     public static ArrayList<String> getSubURLs(String urlString) {
    33         //该方法为每个给定的URL返回一个URL列表
    34         ArrayList<String> list=new ArrayList<>();
    35         try {
    36             int current=0;
    37             URL url=new URL(urlString);
    38             Scanner input=new Scanner(url.openStream());
    39             while(input.hasNext()) {
    40                 String line=input.nextLine();//从Web读取每一行
    41                 current=line.indexOf("http:",current);//寻找该行中的URL
    42                 while(current>0) {
    43                     int endIndex=line.indexOf(""",current);//假设URL以引号"结束
    44                     if(endIndex>0) {
    45                         list.add(line.substring(current,endIndex));//一行中可能包含多个URL,
    46                         current=line.indexOf("http:",endIndex);//方法继续寻找下一个URL
    47                     }
    48                     else current=-1;//如果该行中没有发现URL,curr设为-1
    49                 }
    50             }
    51         }
    52         catch (Exception ex) {
    53             System.out.println("抓取异常: "+ex.getMessage());
    54         }
    55         return list; //页面中包含的URL以一个列表的形式返回
    56     }
    57 }
    View Code

    抓取效果:

    可以对抓取到的url进行提取。

    欢迎访问我的博客! http://www.cnblogs.com/1187163927ch/
  • 相关阅读:
    0909初识操作系统
    实验四主存空间的分配和回收
    实验一 DOS命令解释程序的编写
    0909关于操作系统
    实验四主存空间的分配和回收
    实验3评价
    实验一 DOS命令解释程序的编写
    实验三、进程调度模拟程序实验
    实验二、作业调度实验
    0909 第一次上机课之《为什么学操作系统?》
  • 原文地址:https://www.cnblogs.com/1187163927ch/p/9408553.html
Copyright © 2011-2022 走看看