Ich bin ein Neuling in Apache Nutch und ich würde gerne wissen, ob es möglich ist, ausgewählte Bereich einer Webseite zu crawlen. Wählen Sie zum Beispiel einen bestimmten div
und crawlen Inhalte nur in diesem div
. Jede Hilfe wäre willkommen. Vielen Dank!Wie wähle ich Daten von bestimmten Tags in nutch
Antwort
Sie müssen eine plugin schreiben, die HtmlParseFilter erweitern wird, um Ihr Ziel zu erreichen.
Ich denke, dass Sie einige der Sachen selbst tun werden, wie den spezifischen Abschnitt des HTMLs analysierend, extrahieren Sie die URLs, die Sie wollen, und fügen Sie sie als outlinks hinzu.
HtmlParseFilter Umsetzung: (-Code unten gibt die allgemeine Idee)
ParseResult filter(Content content, ParseResult parseResult, HTMLMetaTags metaTags, DocumentFragment doc){
// get html content
String htmlContent = new String(content.getContent(), StandardCharsets.UTF_8);
// parse html using jsoup or any other library.
String url = content.getUrl();
Parse parse = parseResult.get(url);
ParseData parseData = parse.getData();
Outlink[] links = parseData.getOutlinks();
// modify/select only required outlinks
// return ParsePesult with modified outlinks
return parseResult;
}
Hope this hilfreich sein wird.
Wenn Sie neu zu Plugin sind, habe ich ein einfaches Plugin geschrieben "nutch-fetch-page", die HTML-Seiten und Textinhalt auf einem lokalen Laufwerk mit HtmlParseFilter
Schnittstelle speichert. Sie können den Code verzweigen/herunterladen und ändern.
Können Sie hinzufügen, wie ausgewählte Outlinks mit jsoup gesetzt werden? – Sachin
Technisch lädt ein Crawler immer die ganze Seite. Was Sie mit dem Inhalt machen, liegt ganz bei Ihnen. –
Wenn ja, wie kann ich Inhalte unter einem bestimmten Tag für die nächste Crawl-Runde auswählen? – Sachin
Was meinst du mit Crawlen eines bestimmten div? Sie möchten nur URLs extrahieren, die sich in diesem div befinden? oder indexieren Sie nur den Inhalt des div? –