Scraper:将有意义的文本与无意义的项目区分开来,hadoop

时间:2016-05-19 19:33:30

标签: html hadoop mapreduce web-scraping nutch

我正在尝试在Apache Nutch中构建一个爬虫和刮刀,以查找包含一个特定单词主题的部分的所有页面(例如“选举”,“选举”,“投票”等)。

一旦我爬行,Nutch就会从停用词和标签中清除HTML,但它不会取出菜单声音(位于网站的每个页面中)。 因此,当您查找所有关于选举的页面时,您可以检索整个网站,因为它的菜单中有“选举”一词,因此在每个页面中都有。“

我想知道是否存在分析网站多个页面以了解页面主要模板的技术。有用的论文和/或实现/库。

我正在考虑创建某种hadoop Job,它分析了多个页面之间的相似性来提取模板。但是同一个网站可能有多个模板,因此很难想出有效的方法。

E.G。

WEBPage 1:

MENU HOME VOTE ELECTION NEWS

meaningful text... elections ....

WebPage 2:

MENU HOME VOTE ELECTION NEWS

meaningful text... talking about swimming pools ....

1 个答案:

答案 0 :(得分:2)

你没有提到你使用的Nutch(1.x / 2.x)的哪个分支,但目前我可以想到几种方法:

如果您没有抓取多个不同的网站,并且您可以指定要从索引内容中排除哪些HTML内容节点,请查看NUTCH-585,这将非常有用。

如果您正在使用不同的网站并且之前的方法不可行,请查看使用Apache Tika中的样板功能的NUTCH-961来猜测哪些文本对您的HTML内容很重要。这个库使用了一些算法并提供了几个提取器,您可以尝试它并查看哪些对您有用。根据我的经验,我在新闻网站上遇到了一些问题,这些新闻网站有很多评论,有些评论最终只是与主要文章内容一起编入索引,但毕竟这是一个小问题。无论如何,这种方法在很多情况下都能很好地发挥作用。

此外,您可以查看NUTCH-1870,它可以指定XPath表达式以将网页的某些特定部分提取为单独的字段,在Solr中使用正确的boost参数可以提高您的精度。