一個輕量級的基於事件分發的爬蟲框架。html
An event dispatch crawler framework.java
<dependency>
<groupId>com.jibug.cetty</groupId>
<artifactId>cetty-core</artifactId>
<version>0.1.5</version>
</dependency>
複製代碼
1.詳細文檔:cetty.jibug.com/
2.QQ羣
git
/** * 抓取天涯論壇文章列表標題 * http://bbs.tianya.cn/list-333-1.shtml * * @author heyingcai */
public class Tianya extends ProcessHandlerAdapter {
@Override
public void process(HandlerContext ctx, Page page) {
//獲取 Document
Document document = page.getDocument();
//dom解析
Elements itemElements = document.
select("div#bbsdoc>div#bd>div#main>div.mt5>table>tbody").
get(2).
select("tr");
List<String> titles = Lists.newArrayList();
for (Element item : itemElements) {
String title = item.select("td.td-title").text();
titles.add(title);
}
//獲取Result對象,將咱們解析出來的結果向下一個handler傳遞
Result result = page.getResult();
result.addResults(titles);
//經過fireXXX 方法將本handler 處理的結果向下傳遞
//本教程直接將結果傳遞給ConsoleHandler,將結果直接輸出控制檯
ctx.fireReduce(page);
}
public static void main(String[] args) {
//啓動引導類
Bootstrap.
me().
//使用同步抓取
isAsync(false).
//開啓一個線程
setThreadNum(1).
//抓取入口url
startUrl("http://bbs.tianya.cn/list-333-1.shtml").
//通用請求信息
setPayload(Payload.custom()).
//添加自定處理器
addHandler(new Tianya()).
//添加默認結果處理器,輸出至控制檯
addHandler(new ConsoleReduceHandler()).
start();
}
}
複製代碼
版本 | 說明 |
---|---|
0.1.0 | 支持基本爬蟲功能 |
0.1.5 | 1.支持xpath 2.修復添加cookie失效問題 3.優化底層邏輯 |