Java实验(11) 网页分析
2016-06-24 15:07
351 查看
抓取厦大主页中的“快速链接”下的所有内容。
提示,“快速链接”部分的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/
……
提示,“快速链接”部分的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)); } } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树