Java实验(11) 网页分析

来源:互联网 发布:淘宝电瓶广告车 编辑:程序博客网 时间:2024/05/22 07:03

抓取厦大主页中的“快速链接”下的所有内容。

提示,“快速链接”部分的HTML形如:

<li><a href="http://e.weibo.com/xmunews" target="_blank"><i class="icon icon-list-alt"></i>官方微博</a></li>

程序输出为:[序号] 标题 URL ,每行一个链接,如:
[1]官方微博 http://e.weibo.com/xmunews
[2]易班厦大 http://yiban.xmu.edu.cn/
[3]厦大网址导航 http://123.xmu.edu.cn/
……


import java.util.ArrayList;import java.util.Scanner;public class WebCrawler {    public static void main(String[] args) {        ArrayList<String> list=new ArrayList<>();        ArrayList<String> list2=new ArrayList<>();        try{            java.net.URL url= new java.net.URL("http://www.xmu.edu.cn/");            Scanner input= new Scanner(url.openStream());            String s="icon icon-list-alt\"></i>";            String s2="<li><a href=";            int len=s.length();            int len2=s2.length();            int current=0,current2=0;                     while(input.hasNext()){                    String line=input.nextLine();                    current = line.indexOf(s2,current);                    current2=line.indexOf(s,current2);                    //网址部分                    while(current>0){                        int endIndex= line.indexOf("target=\"_blank\"><i class=\"icon icon-list-alt\"></i>",current);                        if(endIndex>0){                            list.add(line.substring(current+len2+1,endIndex-2));                            current =line.indexOf(s2,endIndex);                        }                        else                            current=-1;                    }                     //标题部分                    while(current2>0){                        int endIndex2= line.indexOf("</a></li>",current);                        if(endIndex2>0){                            list2.add(line.substring(current2+len,endIndex2));                            current2 =line.indexOf("target=\"_blank\"><i class=\"icon icon-list-alt\"></i>",endIndex2);                        }                        else                            current2=-1;                    }                }            }            catch(Exception ex){                System.out.println("Error: "+ex.getMessage());                 }         for(int i=0;i<list.size();i++){             System.out.print("["+(i+1)+"]");             System.out.print(list2.get(i)+"\t");             System.out.println(list.get(i));         }    }}


0 0
原创粉丝点击