如何从StormCrawler提取的文本中排除脚本和样式标签?

时间:2018-10-20 18:21:00

标签: web-crawler stormcrawler

我正在使用Storm crawler 1.10和Elastic Search6.3.x。我在配置中添加了http.content.limit = -1。搜寻器运行良好,当我检查结果功能时,css数据显示在索引中。是否有可能在parserfilter.json的xpath过滤器(例如<script><style>)中应用或任何其他建议来限制搜寻器以避免这些。我正在共享一些记录中显示的示例数据。

 document.getElementById('cloak6258804dfa0d517eaedf4b69a99ed997').innerHTML = '';
                var prefix = '&#109;a' + 'i&#108;' + '&#116;o';
                var path = 'hr' + 'ef' + '=';
                var addy6258804dfa0d517eaedf4b69a99ed997 = '&#97;dm&#105;ss&#105;&#111;ns' + '&#64;';
                addy6258804dfa0d517eaedf4b69a99ed997 = addy6258804dfa0d517eaedf4b69a99ed997 + '&#97;&#117;k' + '&#46;' + '&#111;rg';
                var addy_text6258804dfa0d517eaedf4b69a99ed997 = '&#97;dm&#105;ss&#105;&#111;ns' + '&#64;' + '&#97;&#117;k' + '&#46;' + '&#111;rg';document.getElementById('cloak6258804dfa0d517eaedf4b69a99ed997').innerHTML += '<a ' + path + '\'' + prefix + ':' + addy6258804dfa0d517eaedf4b69a99ed997 + '\'>'+addy_text6258804dfa0d517eaedf4b69a99ed997+'<\/a>'

1 个答案:

答案 0 :(得分:1)

XPathFilter的用途不同,它是从Xpath表达式中提取元数据。还有ContentFilter,它更接近您的需求,因为它允许您将提取的文本的范围限制为一组xpath,但是它并不能为您提供过滤特定标签并保留所有内容的方法其他。

在此阶段,您最好的选择可能是使用基于Tika的ParserBolt:可以使用mapper implementation对其进行配置,默认情况下将其设置为identityMapper,但可以使用Tika或您自己提供的任何其他实现,请参见Tika documentation on HTML mapper

可以随时在GH上打开一个问题,以请求一种新型的parseFilter来排除某些HTML元素,因为这样做可能很有用。我们有一个related issue for googleon / googleoff tags,这可能是实现它的一种方式。

编辑:我们已经发布了TextExtractor,请参见StormCrawler 1.13 release announcement