Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaJSOUP链接忽略_Java_Html_Parsing_Jsoup - Fatal编程技术网

JavaJSOUP链接忽略

JavaJSOUP链接忽略,java,html,parsing,jsoup,Java,Html,Parsing,Jsoup,我有以下代码: 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(Stri

我有以下代码:

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);
}
private静态最终模式文件\u 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))$”;
私有布尔值相关(字符串url){
if(url.length()<1)//删除空url
返回false;
else if(文件\u FILTER.matcher(url.matches()){
返回false;
}
其他的
返回TLSpecific.isRelevant(url);
}
我在解析网站时使用了这一部分来检查它是否包含包含一些声明的模式的链接,但我不知道是否有办法直接通过jsoup来完成这一工作并优化代码。例如,给定一个网页,如何使用jsoup忽略所有这些内容

我怎么能用jsoup忽略所有这些呢

假设我们希望任何元素的
href
src
属性中没有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);
}

您可以向筛选器添加更多扩展。您可能需要编写一些代码来自动生成
filteredLinksCssQuery
,因为此CSS查询可能很快变得无法维护。

我不理解您的问题。您的代码是否按预期工作?如果是,为什么要更改它?你想知道如何更有效地完成工作吗?是的,代码正在工作,我想找到一种方法使它更有效,这就是为什么我认为也许有一种方法可以使用jsoup来完成,但我不确定我假设你的reg ex方法是一种有效的方法来完成这项工作。使用jsoup将增加内存和cpu消耗。如果您不打算添加其他检查,或者不想学习如何使用jsoup,我不会更改代码。
<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$ */