【问题标题】:Java jsoup link ignoreJava jsoup链接忽略
【发布时间】:2016-03-07 19:56:31
【问题描述】:

我有以下代码:

private static final Pattern FILE_FILTER = Pattern.compile(
        ".*(\\.(css|js|bmp|gif|jpe?g|png|tiff?|mid|mp2|mp3|mp4|wav|avi|mov|mpeg|ram|m4v|pdf" +
                "|rm|smil|wmv|swf|wma|zip|rar|gz))$");

private boolean isRelevant(String url) {
    if (url.length() < 1)  // Remove empty urls
        return false;
    else if (FILE_FILTER.matcher(url).matches()) {
        return false;
    }
    else
        return TLSpecific.isRelevant(url);
}

我在解析网站时使用这部分来检查它是否包含包含声明的某些模式的链接,但我不知道有没有办法直接通过 jsoup 来完成并优化代码。例如,给定一个网页,我如何使用 jsoup 忽略所有这些?

【问题讨论】:

  • 我不明白你的问题。您的代码是否按预期工作?如果是这样,您为什么要更改它?您想知道如何更高效地完成工作吗?
  • 是的,代码正在运行,我想找到一种方法让它更高效,这就是为什么我认为也许有一种方法可以用 jsoup 做到这一点,但我不确定
  • 我认为您的 reg ex 方法是完成这项工作的有效方法。使用jsoup会增加内存和cpu消耗。如果您不打算添加其他检查或想学习如何使用 jsoup,我不会更改代码。

标签: java html parsing jsoup


【解决方案1】:

如何使用 jsoup 忽略所有这些?

假设我们希望任何元素的 hrefsrc 属性中没有 jpg 或 jpeg 扩展名。

String filteredLinksCssQuery = "[href]:not([href~=(?i)\\.jpe?g$]), " + //
                               "[src]:not([src~=(?i)\\.jpe?g$])";

String html = "<a href='foo.jpg'>foo</a>" + //
              "<a href='bar.svg'>bar</a>" + //
              "<script src='baz.js'></script>";

Document doc = Jsoup.parse(html);

for(Element e: doc.select(filteredLinksCssQuery)) {
    System.out.println(e);
}

输出

<a href="bar.svg">bar</a>
<script src="baz.js"></script>

[href]                      /* Select any element having an href attribute... */
:not([href~=(?i)\.jpe?g$])  /* ... but exclude those matching the regex (?i)\.jpe?g$ */
,                           /* OR */
[src]                       /* Select any element having a src attribute... */
:not([src~=(?i)\.jpe?g$])   /* ... but exclude those matching the regex (?i)\.jpe?g$ */

您可以添加更多扩展来过滤。您可能需要编写一些代码来自动生成 filteredLinksCssQuery,因为这个 CSS 查询很快就会变得无法维护。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多