首页 > 编程 > 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. in.close(); 
  32. }catch(MalformedURLException me)...{ 
  33. System.out.println("你输入的URL格式有问题!请仔细输入"); 
  34. me.getMessage(); 
  35. throw me; 
  36. }catch (IOException e) ...{ 
  37. e.printStackTrace(); 
  38. throw e; 
  39. return sb.toString(); 
  40. /** *//** 
  41. * 
  42. * @param s 
  43. * @return 获得网页标题 
  44. */ 
  45. public String getTitle(String s) ...{ 
  46. String regex; 
  47. String title = ""
  48. List<String> list = new ArrayList<String>(); 
  49. regex = "<title>.*?</title>"
  50. Pattern pa = Pattern.compile(regex, Pattern.CANON_EQ); 
  51. Matcher ma = pa.matcher(s); 
  52. while (ma.find()) ...{ 
  53. list.add(ma.group()); 
  54. for (int i = 0; i < list.size(); i++) ...{ 
  55. title = title + list.get(i); 
  56. return outTag(title); 
  57. /** *//** 
  58. * 
  59. * @param s 
  60. * @return 获得链接 
  61. */ 
  62. public List<String> getLink(String s) ...{ 
  63. String regex; 
  64. List<String> list = new ArrayList<String>(); 
  65. regex = "<a[^>]*href=("([^"]*)"|'([^']*)'|([^s>]*))[^>]*>(.*?)</a>"; 
  66. Pattern pa = Pattern.compile(regex, Pattern.DOTALL); 
  67. Matcher ma = pa.matcher(s); 
  68. while (ma.find()) ...{ 
  69. list.add(ma.group()); 
  70. return list; 
  71. /** *//** 
  72. * 
  73. * @param s 
  74. * @return 获得脚本代码 
  75. */ 
  76. public List<String> getScript(String s) ...{ 
  77. String regex; 
  78. List<String> list = new ArrayList<String>(); 
  79. regex = "<script.*?</script>"
  80. Pattern pa = Pattern.compile(regex, Pattern.DOTALL); 
  81. Matcher ma = pa.matcher(s); 
  82. while (ma.find()) ...{ 
  83. list.add(ma.group()); 
  84. return list; 
  85. /** *//** 
  86. * 
  87. * @param s 
  88. * @return 获得CSS 
  89. */ 
  90. public List<String> getCSS(String s) ...{ 
  91. String regex; 
  92. List<String> list = new ArrayList<String>(); 
  93. regex = "<style.*?</style>"
  94. Pattern pa = Pattern.compile(regex, Pattern.DOTALL); 
  95. Matcher ma = pa.matcher(s); 
  96. while (ma.find()) ...{ 
  97. list.add(ma.group()); 
  98. return list; 
  99. /** *//** 
  100. * 
  101. * @param s 
  102. * @return 去掉标记 
  103. */ 
  104. public String outTag(String s) ...{ 
  105. return s.replaceAll("<.*?>"""); 

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