java爬虫抓取网页数据(这里有新鲜出炉的Java函数式编程,程序狗速度看过来!)
优采云 发布时间: 2022-01-21 09:02java爬虫抓取网页数据(这里有新鲜出炉的Java函数式编程,程序狗速度看过来!)
新鲜出炉的Java函数式编程来了,程序狗的速度来了!
Java 编程语言 java 是一种面向对象的编程语言,可以编写跨平台的应用软件。 ),JavaSE(j2se)的总称。
本文文章主要介绍JAVA爬虫Gecco工具抓取新闻的例子,有一定的参考价值,感兴趣的朋友可以参考一下。
最近看到Gecoo爬虫工具,感觉还是比较简单好用的。都写个DEMO测试,抓起来。网站
,主要是抓取新闻的标题和发布时间作为抓取的测试对象。通过选择像 Jquery 选择器这样的节点来抓取 HTML 节点非常方便。 Gecco代码主要使用注解来实现URL匹配,看起来更加简洁美观。
添加 Maven 依赖
com.geccocrawler
gecco
1.0.8
编写爬取列表页面
@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 = "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 {
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();
}
}
获取结果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHPERZ。