Stormcrawler获取网站时,会将配置的XPathFilter应用于不是原始HTML表示形式。例如,插入了标签,或者DIV变为H3等。例如,以下配置将HTML代码放入了不是原始的Elasticsearch中:
{
"com.digitalpebble.stormcrawler.parse.ParseFilters": [
{
"class": "com.digitalpebble.stormcrawler.parse.filter.XPathFilter",
"name": "XPathFilter",
"params": {
"canonical": "//*[@rel=\"canonical\"]/@href",
"parse.html": [
"//HTML"
]
}
},
{
"class": "com.digitalpebble.stormcrawler.parse.filter.DomainParseFilter",
"name": "DomainParseFilter",
"params": {
"key": "domain",
"byHost": false
}
}
]
}
这使得很难根据网站的原始源代码编写XPath表达式。是否可以通过将XPathFilter表达式应用于原始网站源代码的方式来配置Stormcrawler?
答案 0 :(得分:0)
您正在使用哪个版本的StormCrawler?您是使用Tika进行解析还是Jsoup? AFAIK Jsoup不会修改内容,但Tika可能会修改。我建议将基于JSoup的ParserBolt用于HTML内容,并将Tika用于其他任何内容。
您可以使用DebugParseFilter查看DOM的外观。