首页 > 编程 > Regex > 正文

Java用正则表达式如何读取网页内容

2020-03-16 21:02:17
字体:大 中 小
来源:转载
供稿:网友

java用正则表达式读取网页内容,通过抓取文章标题及内容,进一步专区整个页面的全部内容,本文代码简单易懂,对java用正则表达式读取网页内容感兴趣的朋友可以参考下

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

 

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表