教您使用java爬虫gecco抓取JD全部商品信息(一)
抓取商品列表信息
AllSortPipeline已经将需要进一步抓取的商品列表信息的链接提取出来了,可以看到链接的格式是:http://list.jd.com/list.html?cat=9987,653,659&delivery=1&JL=4_10_0&go=0。因此我们建立商品列表的Bean——ProductList,代码如下:
@Gecco(matchUrl="http://list.jd.com/list.html?cat={cat}&delivery={delivery}&page={page}&JL={JL}&go=0", pipelines={"consolePipeline", "productListPipeline"})
public classProductListimplementsHtmlBean{
private static final long serialVersionUID = 4369792078959596706L;
@Request
private HttpRequest request;
/**
* 抓取列表项的详细内容,包括titile,价格,详情页地址等
*/
@HtmlField(cssPath="#plist .gl-item")
private List<ProductBrief> details;
/**
* 获得商品列表的当前页
*/
@Text
@HtmlField(cssPath="#J_topPage > span > b")
private int currPage;
/**
* 获得商品列表的总页数
*/
@Text
@HtmlField(cssPath="#J_topPage > span > i")
private int totalPage;
public List<ProductBrief> getDetails(){
return details;
}
publicvoidsetDetails(List<ProductBrief> details){
this.details = details;
}
publicintgetCurrPage(){
return currPage;
}
publicvoidsetCurrPage(int currPage){
this.currPage = currPage;
}
publicintgetTotalPage(){
return totalPage;
}
publicvoidsetTotalPage(int totalPage){
this.totalPage = totalPage;
}
public HttpRequest getRequest(){
return request;
}
publicvoidsetRequest(HttpRequest request){
this.request = request;
}
}
currPage和totalPage是页面上的分页信息,为之后的分页抓取提供支持。ProductBrief对象是商品的简介,主要包括标题、预览图、详情页地址等。
public classProductBriefimplementsHtmlBean{
private static final long serialVersionUID = -377053120283382723L;
@Attr("data-sku")
@HtmlField(cssPath=".j-sku-item")
private String code;
@Text
@HtmlField(cssPath=".p-name> a > em")
private String title;
@Image({"data-lazy-img", "src"})
@HtmlField(cssPath=".p-img > a > img")
private String preview;
@Href(click=true)
@HtmlField(cssPath=".p-name > a")
private String detailUrl;
public String getTitle(){
return title;
}
publicvoidsetTitle(String title){
this.title = title;
}
public String getPreview(){
return preview;
}
publicvoidsetPreview(String preview){
this.preview = preview;
}
public String getDetailUrl(){
return detailUrl;
}
publicvoidsetDetailUrl(String detailUrl){
this.detailUrl = detailUrl;
}
public String getCode(){
return code;
}
publicvoidsetCode(String code){
this.code = code;
}
}
这里需要说明一下@Href(click=true)的click属性,click属性形象的说明了,这个链接我们希望gecco继续点击抓取。对于增加了click=true的链接,gecco会自动加入下载队列中,不需要在手动调用SchedulerContext.into()增加。
编写ProductList的业务逻辑
ProductList抓取完成后一般需要进行持久化,也就是将商品的基本信息入库,入库的方式有很多种,这个例子并没有介绍,gecco支持整合spring,可以利用spring进行pipeline的开发,大家可以参考gecco-spring这个项目。本例子是进行了控制台输出。ProductList的业务处理还有一个很重要的任务,就是对分页的处理,列表页通常都有很多页,如果需要全部抓取,我们需要将下一页的链接入抓取队列。
@PipelineName("productListPipeline")
public classProductListPipelineimplementsPipeline<ProductList> {
@Override
publicvoidprocess(ProductList productList){
HttpRequest currRequest = productList.getRequest();
//下一页继续抓取
int currPage = productList.getCurrPage();
int nextPage = currPage + 1;
int totalPage = productList.getTotalPage();
if(nextPage <= totalPage) {
String nextUrl = "";
String currUrl = currRequest.getUrl();
if(currUrl.indexOf("page=") != -1) {
nextUrl = StringUtils.replaceOnce(currUrl, "page=" + currPage, "page=" + nextPage);
} else {
nextUrl = currUrl + "&" + "page=" + nextPage;
}
SchedulerContext.into(currRequest.subRequest(nextUrl));
}
}
}
JD的列表页通过page参数来指定页码,我们通过替换page参数达到分页抓取的目的。至此,所有的商品的列表信息都已经可以正常抓取了。
相关推荐
}demo地址:教您使用java爬虫gecco抓取JD全部商品信息(一)教您使用java爬虫gecco抓取JD全部商品信息(二)教您使用java爬虫gecco抓取JD全部商品信息(三)集成Htmlunit下载页面爬虫的监控一个完整的例子,分页处理...
#### 二、Java爬虫基础知识 ##### 2.1 HTTP协议 HTTP(Hypertext Transfer Protocol)是互联网上应用最为广泛的一种网络协议,它是客户端浏览器和其他终端与Web服务器之间的请求和响应标准。了解HTTP协议是进行...
【标题】"Java爬虫信息抓取共14页.pdf.zip"揭示了这是一份关于使用Java编程语言进行网络爬虫技术的教程,总计14个页面,且内容被压缩在了一个PDF文档中。这份教程可能涵盖了从基础知识到实战应用的各种主题,帮助...
本文是一份关于使用Java语言进行网页数据抓取的教程,主要介绍了使用Apache HttpClient这个库来完成网络请求和数据获取的操作。Apache HttpClient是一个支持HTTP协议的客户端工具,被广泛应用于Java爬虫开发中,帮助...
Gecco是一款用java语言开发的轻量化的易用的网络爬虫。Gecco整合了jsoup、httpclient、fastjson、spring、htmlunit、redission等优秀框架,让您只需要配置一些jquery风格的选择器就能很快的写出一个爬虫。Gecco框架...
Java爬虫Gecco工具是Java领域中用于网页抓取的一个简单易用的框架,它借鉴了jQuery的选择器语法,使得开发者能方便地定位到需要抓取的网页元素。本文将详细解析如何使用Gecco工具抓取新闻实例,包括配置依赖、编写...
在这个“Java爬虫,信息抓取的实现 完整实例源码”中,我们将深入探讨如何使用Java来编写爬虫,尤其是通过jsoup库进行网页解析。 首先,jsoup是一个非常强大的Java库,它提供了对HTML文档的结构化访问和操作能力。...
根据提供的文件信息,文档标题为“java爬虫抓取网页数据教程”,此文件属于IT技术类教程,特别关注于Java编程语言在编写网络爬虫方面的应用。在这份教程中,将会涉及到使用HttpClient工具在Java环境中抓取网页数据的...
Java爬虫技术是一种利用编程语言(本例中是Java)自动化地从互联网上获取信息的手段。对于初学者来说,理解并实现一个简单的Java爬虫能够帮助他们掌握网络数据抓取的基本原理。在这个过程中,主要涉及以下几个核心...
Java网络爬虫是一种自动化程序,用于从互联网上抓取大量数据。它的工作原理是模拟浏览器发送HTTP请求到服务器,接收响应,并解析返回的HTML或XML文档以提取所需信息。在这个过程中,HttpClient是一个常用的Java库,...
Java爬虫技术是一种用于自动化网页数据抓取的编程方法,尤其在处理图片抓取时,它可以帮助我们批量下载网络上的图像资源。对于新手来说,掌握Java爬虫抓取图片的基本步骤和技巧是十分有益的。 首先,我们需要了解...
java爬虫抓取城市数据,数据抓取后直接持久化到数据库当中。博客地址http://blog.csdn.net/qq_23994787/article/details/78107890 如果没有积分的话,在主页给博主发邮件获取。
亚马逊爬虫抓取商品信息并数据分析.zip亚马逊爬虫抓取商品信息并数据分析.zip亚马逊爬虫抓取商品信息并数据分析.zip亚马逊爬虫抓取商品信息并数据分析.zip亚马逊爬虫抓取商品信息并数据分析.zip亚马逊爬虫抓取商品...
简单Java爬虫,抓取网页内容,让你了解爬虫机制,熟悉网络编程
本项目是基于Java开发的网络爬虫Gecco设计源码,主要使用Java进行开发。项目共包含164个文件,其中Java源代码文件153个,Git忽略配置文件2个,Markdown文档文件2个,YAML配置文件1个,项目许可证文件1个,JPG图片...
Java爬虫WebMagic是开发者常用来抓取网页数据的一个强大工具,尤其对于处理静态页面,它的易用性和灵活性使得在Java开发环境中非常受欢迎。WebMagic的设计理念是模块化,这使得我们可以灵活地组合各个组件来实现不同...
Java爬虫技术是一种用于自动化网页数据抓取的编程方法,主要应用于数据分析、信息提取和搜索引擎构建等领域。在这个完整的实例中,我们将深入探讨如何使用Java语言编写一个基础的网络爬虫,通过源码学习其实现过程。...
JAVA爬虫是指使用JAVA编程语言来实现网页爬虫的技术。爬虫是指模拟用户的行为来自动获取网络资源的程序。JAVA爬虫可以用来自动登录淘宝网,实现自动登录淘宝网的功能。 在本例中,我们使用了Selenium工具来实现自动...
【标题】:“很简易的java爬虫 可以爬取携程的航班数据.rar”揭示了这个项目是一个基于Java实现的简单网络爬虫,其主要功能是抓取携程网站上的航班信息。 【描述】:“很简易的java爬虫 可以爬取携程的航班数据,并...