Selectable 相关的抽取元素链式API 是WebMagic 的一个核心功能。在WebMagic 学习(一)的例子中可以看到,page.getHtml() 返回的是一个Html 对象,它实现了Selectable 接口。
Selectable 的接口代码如下:
package us.codecraft.webmagic.selector;
import java.util.List;
import us.codecraft.webmagic.selector.Selector;
public interface Selectable {
Selectable xpath(String var1);
Selectable $(String var1);
Selectable $(String var1, String var2);
Selectable css(String var1);
Selectable css(String var1, String var2);
Selectable smartContent();
Selectable links();
Selectable regex(String var1);
Selectable regex(String var1, int var2);
Selectable replace(String var1, String var2);
String toString();
String get();
boolean match();
List<String> all();
Selectable jsonPath(String var1);
Selectable select(Selector var1);
Selectable selectList(Selector var1);
List<Selectable> nodes();
}
API说明
方法 | 说明 | 示例 |
---|---|---|
xpath(String xpath) | 使用XPath选择 | html.xpath("//div[@class='title']") |
$(String selector) | 使用Css选择器选择 | html.$("div.title") |
$(String selector,String attr) | 使用Css选择器选 | html.$("div.title","text") |
css(String selector) | 功能同$(),使用Css选择器选择 | html.css("div.title") |
links() | 选择所有链接 | html.links() |
regex(String regex) | 使用正则表达式抽取 | html.regex("(.*?)") |
regex(String regex,int group) | 使用正则表达式抽取,并指定捕获组 | html.regex("(.*?)",1) |
replace(String regex, String replacement) | 替换内容 | html.replace("","") |
get() | 返回一条String类型的结果 | String link= html.links().get() |
toString() | 功能同get(),返回一条String类型的结果 | String link=html.links().toString() |
all() | 返回所有抽取结果 | List links= html.links().all() |
match() | 是否有匹配结果 | if (html.links().match()){ xxx; } |
示例
获取页面的符合http://gank.io/2017/04/26 格式的所有链接
page.addTargetRequests(page.getHtml().links().regex("(http://gank\\.io/\\d+/\\d+/\\d+)").all());