java基础:9.4 web爬虫

本文将探讨Java如何实现Web爬虫技术,通过跟踪网页超链接进行自动化遍历,深入了解网络数据抓取的过程。
摘要由CSDN通过智能技术生成

跟随超链接来自动遍历Web.

package day11;
import java.util.ArrayList;
import java.util.Scanner;
public class WebCrawler {
	public static void main(String[] args) {
		Scanner input = new Scanner(System.in);
		System.out.println("enter a URL(such as:http://wwww.xxxx.com):");
		String url = input.nextLine();
		crawler(url);
	}
	
	public static void crawler(String startingURL) {
		ArrayList<String> listOfPendingURLs = new ArrayList<>();
		ArrayList<String> listOfTraversedURLs = new ArrayList<>();
		listOfPendingURLs.add(startingURL) ;
		int i= 0;
		while (!listOfPendingURLs.isEmpty() &&   //is.Empty() :empty return true
				listOfTraversedURLs.size() <= 100) {
			String urlString = listOfPendingURLs.remove(0);  // remove the first url
			if (!listOfTraversedURLs.contains(urlString)) {
				listOfTraversedURLs.add(urlString);
				System.out.println("Crawl " + ++i + "  "+urlString);
				
				for (String s: getSubURLs(urlString)) {
					if (!listOfTraversedURLs.contains(s))
						listOfPendingURLs.add (s);
				}
			}
		}
	}
	
	public static ArrayList<String> getSubURLs(String urlString) {
		ArrayList<String> list = new ArrayList<>() ;
		
		try {
			java.net.URL url = new java.net.URL(urlString);
			Scanner input = new Scanner(url.openStream());
			int current = 0;
			while(input.hasNext()) {
				String line = input.nextLine();
				current = line.indexOf("http:",current);
				while (current > 0) {
					int endIndex = line.indexOf("\"",current);
				    if (endIndex > 0 ) {
				    	list.add(line.substring(current,endIndex));
				    	current = line.indexOf("http:",endIndex);
				    }
				    else 
				    	current = -1;
				}
			}
		}
		catch (Exception ex) {
			System.out.println("error:" + ex.getMessage());
		}
		
		return list;
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值