All Downloads are FREE. Search and download functionalities are using the official Maven repository.

us.codecraft.webmagic.selector.Html Maven / Gradle / Ivy

There is a newer version: 1.0.2
Show newest version
package us.codecraft.webmagic.selector;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.nodes.Entities;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Collections;
import java.util.List;

/**
 * Selectable html.
* * @author [email protected]
* @since 0.1.0 */ public class Html extends HtmlNode { private Logger logger = LoggerFactory.getLogger(getClass()); private static volatile boolean INITED = false; /** * Disable jsoup html entity escape. It can be set just before any Html instance is created. */ public static boolean DISABLE_HTML_ENTITY_ESCAPE = false; /** * Disable jsoup html entity escape. It is a hack way only for jsoup 1.7.2. */ private void disableJsoupHtmlEntityEscape() { if (DISABLE_HTML_ENTITY_ESCAPE && !INITED) { Entities.EscapeMode.base.getMap().clear(); Entities.EscapeMode.extended.getMap().clear(); Entities.EscapeMode.xhtml.getMap().clear(); INITED = true; } } /** * Store parsed document for better performance when only one text exist. */ private Document document; public Html(String text) { try { disableJsoupHtmlEntityEscape(); this.document = Jsoup.parse(text); } catch (Exception e) { this.document = null; logger.warn("parse document error ", e); } } public Html(Document document) { this.document = document; } public Document getDocument() { return document; } @Override protected List getElements() { return Collections.singletonList(getDocument()); } /** * @param selector selector * @return result */ public String selectDocument(Selector selector) { if (selector instanceof ElementSelector) { ElementSelector elementSelector = (ElementSelector) selector; return elementSelector.select(getDocument()); } else { return selector.select(getFirstSourceText()); } } public List selectDocumentForList(Selector selector) { if (selector instanceof ElementSelector) { ElementSelector elementSelector = (ElementSelector) selector; return elementSelector.selectList(getDocument()); } else { return selector.selectList(getFirstSourceText()); } } public static Html create(String text) { return new Html(text); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy