java从网页抓取数据(使用正则表达式和相应的类或使用哪一个取决于)
优采云 发布时间: 2021-12-07 07:33java从网页抓取数据(使用正则表达式和相应的类或使用哪一个取决于)
使用正则表达式和相应的类或使用 HTML 解析器。您使用哪一个取决于您是希望能够处理整个网络还是仅处理几个您知道布局并可以测试的特定页面。
匹配 99% 页面的简单正则表达式可能如下所示:
// The HTML page as a String String HTMLPage; Pattern linkPattern = Pattern.compile("(]+>.+?)", Pattern.CASE_INSENSITIVE|Pattern.DOTALL); Matcher pageMatcher = linkPattern.matcher(HTMLPage); ArrayList links = new ArrayList(); while(pageMatcher.find()){ links.add(pageMatcher.group()); } // links ArrayList now contains all links in the page as a HTML tag // ie <a att1="val1" ...>Text inside tag</a>
您可以编辑它以匹配更多、更符合标准等,但在这种情况下,您需要一个真正的解析器。如果您只对 href="" 及其之间的文本感兴趣,也可以使用此正则表达式:
Pattern linkPattern = Pattern.compile("]+href=[\"']?([\"'>]+)[\"']?[^>]*>(.+?)", Pattern.CASE_INSENSITIVE|Pattern.DOTALL);
并使用 .group(1) 访问链接部分,并使用 .group(1) 访问文本部分