
us.codecraft.webmagic.selector.AbstractSelectable Maven / Gradle / Ivy
package us.codecraft.webmagic.selector;
import org.apache.commons.collections.CollectionUtils;
import java.util.ArrayList;
import java.util.List;
/**
* @author [email protected]
* @since 0.5.2
*/
public abstract class AbstractSelectable implements Selectable {
protected abstract List getSourceTexts();
@Override
public Selectable css(String selector) {
return $(selector);
}
@Override
public Selectable css(String selector, String attrName) {
return $(selector, attrName);
}
protected Selectable select(Selector selector, List strings) {
List results = new ArrayList();
for (String string : strings) {
String result = selector.select(string);
if (result != null) {
results.add(result);
}
}
return new PlainText(results);
}
protected Selectable selectList(Selector selector, List strings) {
List results = new ArrayList();
for (String string : strings) {
List result = selector.selectList(string);
results.addAll(result);
}
return new PlainText(results);
}
@Override
public List all() {
return getSourceTexts();
}
@Override
public Selectable jsonPath(String jsonPath) {
throw new UnsupportedOperationException();
}
@Override
public String get() {
if (CollectionUtils.isNotEmpty(all())) {
return all().get(0);
} else {
return null;
}
}
@Override
public Selectable select(Selector selector) {
return select(selector, getSourceTexts());
}
@Override
public Selectable selectList(Selector selector) {
return selectList(selector, getSourceTexts());
}
@Override
public Selectable regex(String regex) {
RegexSelector regexSelector = Selectors.regex(regex);
return selectList(regexSelector, getSourceTexts());
}
@Override
public Selectable regex(String regex, int group) {
RegexSelector regexSelector = Selectors.regex(regex, group);
return selectList(regexSelector, getSourceTexts());
}
@Override
public Selectable replace(String regex, String replacement) {
ReplaceSelector replaceSelector = new ReplaceSelector(regex,replacement);
return select(replaceSelector, getSourceTexts());
}
public String getFirstSourceText() {
if (getSourceTexts() != null && getSourceTexts().size() > 0) {
return getSourceTexts().get(0);
}
return null;
}
@Override
public String toString() {
return get();
}
@Override
public boolean match() {
return getSourceTexts() != null && getSourceTexts().size() > 0;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy