java爬虫Gecco工具抓取新闻实例

网友投稿 213 2023-07-01


java爬虫Gecco工具抓取新闻实例

最近看到Gecoo爬虫工具,感觉比较简单好用,所有写个DEMO测试一下,抓取网站

http://zj.zjol.com.cn/home.html,主要抓取新闻的标题和发布时间做为抓取测试对象。抓取HTML节点通过像jquery选择器一样选择节点,非常方便,Gecco代码主要利用注解实现来实现URL匹配,看起来比较简洁美观。

添加Maven依赖

com.geccocrawler

gecco

1.0.8

</dependency>

编写抓取列表页面

@Gecco(matchUrl = "http://zj.zjol.com.cn/home.html?pageIndex={pageIndex}&pageSize={pageSize}",pipelines = "zJNewsListPipelines")

public class ZJNewsGeccoList implements HtmlBean {

@Request

private HttpRequest request;

@RequestParameter

private int pageIndex;

@RequestParameter

private int pageSize;

@HtmlField(cssPath = "#content > div > div > div.con_index > div.r.main_mod > div > ul > li > dl > dt > a")

private List newList;

}

@PipelineName("zJNewsListPipelines")

public class ZJNewsListPipelines implements Pipeline {

public void process(ZJNewsGeccoList zjNewsGeccoList) {

HttpRequest request=zjNewsGeccoList.getRequest();

for (HrefBean bean:zjNewsGeccoList.getNewList()){

//进入祥情页面抓取

SchedulerContext.into(request.subRequest("http://zj.zjol.com.cn"+bean.getUrl()));

}

int page=zjNewsGeccoList.getPageIndex()+1;

String nextUrl = "http://zj.zjol.com.cn/home.html?pageIndex="+page+"&pageSize=100";

//抓取下一页

SchedulerContext.into(request.subRequest(nextUrl));

}

}

编写抓取祥情页面

@Gecco(matchUrl = "http://zj.zjol.com.cn/news/[code].html" ,pipelines = "zarTyluqxFjNewsDetailPipeline")

public class ZJNewsDetail implements HtmlBean {

@Text

@HtmlField(cssPath = "#headline")

private String title ;

@Text

@HtmlField(cssPath = "#content > div > div.news_con > div.news-content > div:nth-child(1) > div > p.go-left.post-time.c-gray")

private String createTime;

}

@PipelineName("zjNewsDetailPipeline")

public class ZJNewsDetailPipeline implemhttp://ents Pipeline {

public void process(ZJNewsDetail zjNewsDetail) {

System.out.println(zjNewsDetail.getTitle()+" "+zjNewsDetail.getCreateTime());

}

}

启动主函数

public class Main {

public static void main(String [] rags){

GeccoEngine.create()

//工程的包路径

.classpath("com.zhaochao.gecco.zj")

//开始抓取的页面地址

.start("http://zj.zjol.com.cn/home.html?pageIndex=1&pageSize=100")

//开启几个爬虫线程

.thread(10)

//单个爬虫每次抓取完一个请求后的间隔时间

.interval(10)

//使用pc端userAgent

.mobile(false)

//开始运行

.run();

}

}

抓取结果


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序 loading(加载中提示框)实例
下一篇:基于Java代码实现游戏服务器生成全局唯一ID的方法汇总
相关文章

 发表评论

暂时没有评论,来抢沙发吧~