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$ */