首页 > 编程 > Java > 正文

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

2019-11-26 13:38:50
字体:
来源:转载
供稿:网友

最近看到Gecoo爬虫工具,感觉比较简单好用,所有写个DEMO测试一下,抓取网站
http://zj.zjol.com.cn/home.html,主要抓取新闻的标题和发布时间做为抓取测试对象。抓取HTML节点通过像Jquery选择器一样选择节点,非常方便,Gecco代码主要利用注解实现来实现URL匹配,看起来比较简洁美观。

添加Maven依赖

<dependency>   <groupId>com.geccocrawler</groupId>   <artifactId>gecco</artifactId>   <version>1.0.8</version></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<HrefBean> newList;}
@PipelineName("zJNewsListPipelines")public class ZJNewsListPipelines implements Pipeline<ZJNewsGeccoList> {  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 = "zjNewsDetailPipeline")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 implements Pipeline<ZJNewsDetail> {  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();  }}

抓取结果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林网。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表