我正在开发一个 Web 应用程序,在该应用程序中显示来自其他网站的 HTML。在显示最终版本之前,我想摆脱广告。
关于如何实现这一点的任何想法和建议?它不需要是一个超级高效的过滤工具,我正在考虑将adblockplus定义的一些过滤器移植到 Ruby 并在Nokogiri的帮助下返回解析的文档。
假设我使用超级通配符过滤器ad
。这不是官方的广告块,但为简单起见,我将在这里使用它。然后的想法是删除任何属性与过滤器匹配的所有元素,例如:src="http://ad.foo.com?my-ad.gif"
href="http://ad.foo.com"
class="annoying-ad"
等。
此过滤器的 Nokogiri 命令将是:
doc.xpath("//*[@*[contains(., 'ad')]]").each { |element| element.remove }
我为此页面应用了过滤器:
结果是:
还不错,请注意,全局通配符过滤器也去掉了像标题这样的有效元素,因为它们具有像id="masthead"
.
所以我认为这种方法适合我的情况,现在的问题是使用什么过滤器?他们有一个庞大的过滤器列表,我不想遍历所有过滤器。我正在考虑获取前 10-20 名并基于此解析文档,是否有最受欢迎的列表?如果是这样,我还没有找到它。