当前位置:首页 > 通信资讯 > 正文

学习java的正则表达式,抓取网页并解析HTML部分内容

  1. packagecom.xiaofeng.picup;
  2. importjava.io.BufferedReader;
  3. importjava.io.IOException;
  4. importjava.io.InputStreamReader;
  5. importjava.net.MalformedURLException;
  6. importjava.net.URL;
  7. importjava.util.ArrayList;
  8. importjava.util.HashMap;
  9. importjava.util.List;
  10. importjava.util.regex.Matcher;
  11. importjava.util.regex.Pattern;
  12. /***//**
  13. *
  14. *@抓取页面文章标题及内容(测试)手动输入网址抓取,可进一步自动抓取整个页面的全部内容
  15. *
  16. */
  17. publicclassWebContent...{
  18. /***//**
  19. *读取一个网页全部内容
  20. */
  21. publicStringgetOneHtml(Stringhtmlurl)throwsIOException...{
  22. URLurl;
  23. Stringtemp;
  24. StringBuffersb=newStringBuffer();
  25. try...{
  26. url=newURL(htmlurl);
  27. BufferedReaderin=newBufferedReader(newInputStreamReader(url
  28. .openStream(),"utf-8"));//读取网页全部内容
  29. while((temp=in.readLine())!=null)...{
  30. sb.append(temp);
  31. }
  32. in.close();
  33. }catch(MalformedURLExceptionme)...{
  34. System.out.println("你输入的URL格式有问题!请仔细输入");
  35. me.getMessage();
  36. throwme;
  37. }catch(IOExceptione)...{
  38. e.printStackTrace();
  39. throwe;
  40. }
  41. returnsb.toString();
  42. }
  43. /***//**
  44. *
  45. *@params
  46. *@return获得网页标题
  47. */
  48. publicStringgetTitle(Strings)...{
  49. Stringregex;
  50. Stringtitle="";
  51. List<String>list=newArrayList<String>();
  52. regex="<title>.*?</title>";
  53. Patternpa=Pattern.compile(regex,Pattern.CANON_EQ);
  54. Matcherma=pa.matcher(s);
  55. while(ma.find())...{
  56. list.add(ma.group());
  57. }
  58. for(inti=0;i<list.size();i++)...{
  59. title=title+list.get(i);
  60. }
  61. returnoutTag(title);
  62. }
  63. /***//**
  64. *
  65. *@params
  66. *@return获得链接
  67. */
  68. publicList<String>getLink(Strings)...{
  69. Stringregex;
  70. List<String>list=newArrayList<String>();
  71. regex="<a[^>]*href=("([^"]*)"|'([^']*)'|([^s>]*))[^>]*>(.*?)</a>";
  72. Patternpa=Pattern.compile(regex,Pattern.DOTALL);
  73. Matcherma=pa.matcher(s);
  74. while(ma.find())...{
  75. list.add(ma.group());
  76. }
  77. returnlist;
  78. }
  79. /***//**
  80. *
  81. *@params
  82. *@return获得脚本代码
  83. */
  84. publicList<String>getScript(Strings)...{
  85. Stringregex;
  86. List<String>list=newArrayList<String>();
  87. regex="<script.*?</script>";
  88. Patternpa=Pattern.compile(regex,Pattern.DOTALL);
  89. Matcherma=pa.matcher(s);
  90. while(ma.find())...{
  91. list.add(ma.group());
  92. }
  93. returnlist;
  94. }
  95. /***//**
  96. *
  97. *@params
  98. *@return获得CSS
  99. */
  100. publicList<String>getCSS(Strings)...{
  101. Stringregex;
  102. List<String>list=newArrayList<String>();
  103. regex="<style.*?</style>";
  104. Patternpa=Pattern.compile(regex,Pattern.DOTALL);
  105. Matcherma=pa.matcher(s);
  106. while(ma.find())...{
  107. list.add(ma.group());
  108. }
  109. returnlist;
  110. }
  111. /***//**
  112. *
  113. *@params
  114. *@return去掉标记
  115. */
  116. publicStringoutTag(Strings)...{
  117. returns.replaceAll("<.*?>","");
  118. }

如果您对该产品感兴趣,请填写办理(客服微信:xiaoxiongyidong)

为您推荐:

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。