Как очистить данные из <body> HTML-страниц с помощью Lucidworks Fusion 4.1
Я использую веб-коннектор для чистки данных с сайта ( https://www.silverhavenjewellery.com/categories/silver-jewellery-designs.html). Веб-страница содержит множество элементов, вложенных в тег body (div, ul, li и т. Д.). Из документации Lucidworks я обнаружил, что встроенный анализатор HTML извлекает данные только из следующих тегов: title, meta, a, link и body (но не потомков body). Вот эта страница: https://doc.lucidworks.com/fusion-server/4.1/reference-guides/parser-stages/html-parser.html. Чтобы преодолеть это, я следовал инструкциям этого блога Lucidworks: https://lucidworks.com/2017/01/24/extracting-values-from-element-attributes-using-jsoup-and-a-javascript-stage/. Посмотрите код JavaScript, который я использовал, чтобы попытаться очистить дочерние элементы тега body ниже. Обратите внимание, что код работает, как и ожидалось, когда я изменяю "div" в строке кода ниже на "body". Если я ищу какой-либо из дочерних элементов в теле, он даже не осознает, что они существуют. Любая помощь для преодоления этой проблемы будет принята с благодарностью
divs = jdoc.select("div");
function(doc){
var File = java.io.File;
var Iterator = java.util.Iterator;
var Jsoup = org.jsoup.Jsoup;
var Document = org.jsoup.nodes.Document;
var Element = org.jsoup.nodes.Element;
var Elements = org.jsoup.select.Elements;
var content = doc.getFirstFieldValue("body");
var jdoc = org.jsoup.nodes.Document;
var e = java.lang.Exception;
var div = org.jsoup.nodes.Element;
var img = org.jsoup.nodes.Element;
var iter = java.util.Iterator;
var divs = org.jsoup.select.Elements;
var counter = 1;
try {
jdoc = Jsoup.parse(content);
divs = jdoc.select("div");
iter = divs.iterator();
div = null; // initialize our value to null
while (iter.hasNext()) {
doc.addField(counter, "woohoo"); //for debugging purposes
div = iter.next();
counter = counter++;
}
if (div != null) {
doc.addField("found it", "woohoo");//for debugging purposes
} else {
doc.addField("error", "this is an error");//for debugging purposes
logger.warn("Div was null");
}
} catch ( e) {
logger.error(e);
}
return doc;
}