- HTML code
<div class="notice_body"><div id="demo"><div id="demo1"><ul class="nl"><li><span class="gray dateR">04-07</span><a href="show.aspx?id=16446&cid=37" target="_blank" title="广西五一劳动奖章候选人公示">广西五一劳动奖章候选人</a></li><li><span class="gray dateR">04-05</span><a href="trans.aspx?id=16419" target="_blank" title="2012年度广西重大课题研究招标公告">2012年度广西重大课题研</a></li></ul> <br><br><br><br><br><br><br><br></div><div id="demo2"></div>
我是在没办法了,到这里来求救了,
这是个网页,我要用程序抓取上面代码中的一些信息,有<a></a>标签里面的内容和<a>的超链接。
从上面的html应该获取到的信息是show.aspx?id=16446&cid=37 广西五一劳动奖章候选人公示">广西五一劳动奖章候选人 trans.aspx?id=16419 2012年度广西重大课题研究招标公告">2012年度广西重大课题研。
好像可以用HTMLParser来作,但是我不太清楚怎么用
希望大家帮帮忙了
------解决方案--------------------------------------------------------
- Java code
String str ="<li><span class=\"gray dateR\">04-07</span><a href=\"show.aspx?id=16446&cid=37\" target=\"_blank\" title=\"广西五一劳动奖章候选人公示\">广西五一劳动奖章候选人</a></li>"+ "<li><span class=\"gray dateR\">04-05</span><a href=\"trans.aspx?id=16419\"target=\"_blank\" title=\"2012年度广西重大课题研究招标公告\">2012年度广西重大课题研</a></li>"+ "</ul><br><br><br><br><br><br><br><br></div><div id=\"demo2\"></div>"; Pattern p=Pattern.compile("<a\\s+.*?>?</a>"); Matcher m = p.matcher(str); while(m.find()){ System.out.println(m.group()); }不管有没有用,先给你救救急,看用的上么
------解决方案--------------------------------------------------------
- Java code
//效率有点低,不过功能能实现吧。。public static void main(String[] args) { String str = "<a href=\"show.aspx?id=16446&cid=37\" target=\"_blank\" title=\"广西五一劳动奖章候选人公示\">广西五一劳动奖章候选人</a>"+ "<div class=\"notice_body\">" + "<div id=\"demo\"><div id=\"demo1\">"+ "<ul class=\"nl\">" + "<li><span class=\"gray dateR\">04-07</span>" + "<a href=\"show.aspx?id=16446&cid=37\" " + "target=\"_blank\" title=\"广西五一劳动奖章候选人公示\">广西五一劳动奖 章候选人 </a></li>"+ "<li><span class=\"gray dateR\">04-05</span>" + "<a href=\"trans.aspx?id=16419\"target=\"_blank\" title=\"2012年度广西重大课题研究招标公告\">2012年度广西重大课题研</a></li>"+ "</ul><br><br><br><br><br><br><br><br></div><div id=\"demo2\"></div>"; Pattern p=Pattern.compile("<div class=\"notice_body\">|<div|</div>|<a\\s+href=\"(.*?>?)</a>"); Matcher m = p.matcher(str); Boolean flag = false; int count = 0; while(m.find()){ if(m.group().equals("<div class=\"notice_body\">")){ flag = true; count++; } else if(m.group().equals("<div")){ if(flag==true) count++; } else if(m.group().equals("</div>")){ if(flag==true&&count!=0){ count--; } if(count==0){ flag = false; } } else{ if(flag==true){ System.out.println(m.group()); } } } }