【问题标题】:Getting all links from a webpage从网页中获取所有链接
【发布时间】:2013-02-23 15:30:53
【问题描述】:

我想在执行 GET 后获取页面中的所有链接,我的代码适用于某些网站,但不适用于其他网站,但在调试时显示未找到匹配项,并且它永远不会进入 while 循环,尽管有链接在那个网站上

  Pattern linkPattern = Pattern.compile("<a[^>]+href=[\"']?([\"'>]+)[\"']?[^>]*>(.+?)",               
    Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
    Matcher pageMatcher = linkPattern.matcher(Content);

    if (FindKeyword(Content)) {
        LinksWithKey.add(HostName);
    }
        count++;

    while (pageMatcher.find()) {

【问题讨论】:

  • 显示我们的正则表达式不匹配的示例或 URL
  • Jsoup 会更容易吗?
  • 你可能想看看jsoup。他们甚至有一个example 展示如何从下载的页面中提取链接。
  • 不要尝试在需要解析器的地方使用正则表达式。这需要一个解析器。
  • “因此需要使用套接字,我想我需要搜索它们” 你觉得这有意义吗?听到它读起来像废话。

标签: java regex url hyperlink


【解决方案1】:

就像 cmets 中所说的那样,您应该考虑使用 JSoup 来完成这样的任务。

Document doc = Jsoup.parse(Content); // this is your original HTML content
for (Element link : doc.select("a[href]")) {
    System.out.println(link.attr("href"));
}

【讨论】:

  • 我尝试过使用 JSOUP,但循环只输入一次,即使有其他链接也不会再输入
猜你喜欢
  • 1970-01-01
  • 2018-03-26
  • 2014-01-30
  • 2018-01-03
  • 2020-01-25
  • 1970-01-01
  • 2020-09-13
  • 2020-02-29
  • 2011-10-05
相关资源
最近更新 更多