序
webmagic是java里頭比較優(yōu)秀的一個爬蟲框架:
- 使用Jsoup作為HTML解析工具膳叨,并基于其開發(fā)了解析XPath的工具Xsoup间景。
- 默認使用了Apache HttpClient作為下載工具。
這里展示一下入門級使用偷霉。
maven
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-core</artifactId>
<version>0.7.3</version>
</dependency>
<dependency>
<groupId>us.codecraft</groupId>
<artifactId>webmagic-extension</artifactId>
<version>0.7.3</version>
</dependency>
啟動類
public static void main(String[] args) {
Spider.create(new GithubRepoPageProcessor())
//從https://github.com/code4craft開始抓
.addUrl("https://github.com/code4craft")
//設置Scheduler迄委,使用Redis來管理URL隊列
.setScheduler(new RedisScheduler("localhost"))
//設置Pipeline,將結果以json方式保存到文件
.addPipeline(new JsonFilePipeline("D:\\data\\webmagic"))
//開啟5個線程同時執(zhí)行
.thread(5)
//啟動爬蟲
.run();
}
PageProcessor
核心的工作主要是自定義PageProcessor类少,比如
new PageProcessor() {
@Override
public void process(Page page) {
List<String> links = page.getHtml()
.xpath("http://table[@id='jrjthreadtable']//td/a/@href")
.regex("/msg,\\d+.*.html")
.all();
System.out.println(links);
}
@Override
public Site getSite() {
return Site.me()
.setRetryTimes(3)
.setSleepTime(1000)
.setTimeOut(10000);
}
這里使用了xpath的語法來選取叙身,不熟悉xpath的話,可以使用chrome:檢查-copy-copy xpath來學習硫狞。