【发布时间】:2016-07-07 16:24:56
【问题描述】:
我使用白名单如下:
Document doc = Jsoup.parse(urls[0], 5000);
if (doc != null){
Whitelist wl = Whitelist.basicWithImages();
// wl.preserveRelativeLinks(false);
Cleaner cleaner = new Cleaner(wl);
cleanedDoc=cleaner.clean(doc);
if (cleanedDoc != null){
whiteListedHtml = cleanedDoc.html();
}
}
}catch(IOException e){
Log.d(TAG,"exception="+e.getMessage());
}
现在这与我想做的非常接近,除了: 有类具有“nav”或“ad”的 div 标签正在填充页面 垃圾。例如,我想保留 div 标签,但如果类碰巧出现“导航”或“广告”,则不保留。
这让我想到了子类化白名单...... RTFM http://jsoup.org/apidocs/org/jsoup/safety/Whitelist.html 我明白了 addTag() 和 removeTag() (不知何故 removeTag() 不可用,但那是另一个问题)。我真正想要做的是当且仅当标签的类在字符串中包含某些值(例如“广告”或“导航”)时才删除。 唯一看起来有希望的方法是:
protected boolean isSafeTag(String tag)
Test if the supplied tag is allowed by this whitelist
Parameters:
tag - test tag
Returns:
true if allowed
那么如何提取这个字符串的类值进行测试呢?无论如何都可以在不子类化白名单的情况下进行此检查?
【问题讨论】:
标签: jsoup