Gecco学习笔记(十一)
2021SC@SDUSC
接上篇
完成对AllSort的注入后,我们需要对AllSort进行业务处理,这里我们不做分类信息持久化等处理,只对分类链接进行提取,进一步抓取商品列表信息。看代码:
@PipelineName("allSortPipeline")
public class AllSortPipeline implements Pipeline<AllSort> {@Overridepublic void process(AllSort allSort) {List<Category> categorys = allSort.getMobile();for(Category category : categorys) {List<HrefBean> hrefs = category.getCategorys();for(HrefBean href : hrefs) {String url = href.getUrl()+"&delivery=1&page=1&JL=4_10_0&go=0";HttpRequest currRequest = allSort.getRequest();SchedulerContext.into(currRequest.subRequest(url));}}}}
@PipelinName定义该pipeline的名称,在AllSort的@Gecco注解里进行关联,这样,gecco在抓取完并注入Bean后就会逐个调用@Gecco定义的pipeline了。为每个子链接增加"&delivery=1&page=1&JL=4_10_0&go=0"的目的是只抓取京东自营并且有货的商品。SchedulerContext.into()方法是将待抓取的链接放入队列中等待进一步抓取。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 class ProductList implements HtmlBean {private static final long serialVersionUID = 4369792078959596706L;@Requestprivate 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;}public void setDetails(List<ProductBrief> details) {this.details = details;}public int getCurrPage() {return currPage;}public void setCurrPage(int currPage) {this.currPage = currPage;}public int getTotalPage() {return totalPage;}public void setTotalPage(int totalPage) {this.totalPage = totalPage;}public HttpRequest getRequest() {return request;}public void setRequest(HttpRequest request) {this.request = request;}}
currPage和totalPage是页面上的分页信息,为之后的分页抓取提供支持。ProductBrief对象是商品的简介,主要包括标题、预览图、详情页地址等。
Gecco学习笔记(十一)相关推荐
- Apache Nutch 1.3 学习笔记十一(页面评分机制 OPIC)
1. Nutch 1.3 的页面评分机制 Nutch1.3目前默认还是使用OPIC作为其网页分数算法,但其之后,已经引入了PageRank-like算法,以弥补OPIC算法的不足,目前OPIC算法还是 ...
- 吴恩达《机器学习》学习笔记十一——应用机器学习的建议
吴恩达<机器学习>学习笔记十一--应用机器学习的建议 一.训练完模型后下一步要做什么 二.评估算法与模型选择 1.训练集与测试集 2.训练/测试步骤 3.模型选择 4.数据集新的划分--验 ...
- 吴恩达《机器学习》学习笔记十一——神经网络代码
吴恩达<机器学习>学习笔记十一--神经网络代码 数据准备 神经网络结构与代价函数· 初始化设置 反向传播算法 训练网络与验证 课程链接:https://www.bilibili.com/v ...
- ROS学习笔记十一:ROS中数据的记录与重放
ROS学习笔记十一:ROS中数据的记录与重放 本节主要介绍如何记录一个正在运行的ROS系统中的数据,然后在一个运行的系统中根据记录文件重新产生和记录时类似的运动情况.本例子还是以小海龟例程为例. 记录 ...
- Apache Nutch 1.3 学习笔记十一(页面评分机制 LinkRank 介绍)
下面是Google翻译的http://wiki.apache.org/nutch/NewScoring内容,是关于Nutch 新的链接分数算法的说明,有点类似于Google的PageRank,这里有其 ...
- Vue学习笔记(十一)
1.Vue学习笔记(十一) 文章目录 1.Vue学习笔记(十一) 1.1Vue_配置代理_方式 1.1.0演示问题 1.1.1运行node server1 1.1.2运行node server2 1. ...
- Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程) 一.TCP服务器(一请求一线程) 的原理 二.完整代码 三.测试 四.补充 一.TCP服务器(一请求一线 ...
- Polyworks脚本开发学习笔记(十一)-玩转获取参数(GET)与设置参数
Polyworks脚本开发学习笔记(十一)-玩转获取参数(GET)与设置参数 Polyworks采用了脚本语言作为二次开发的工具,因此语言格式上非常规范和统一.其中一个重要的特点就是,几乎所有的对象都 ...
- kvm虚拟化学习笔记(十一)之kvm虚拟机扩展磁盘空间
kvm虚拟机磁盘空间扩展与xen虚拟机磁盘空间扩展思路一致.原因在于xen/kvm默认的虚拟机磁盘格式为raw,所以方式可以通用. raw磁盘格式扩展思路如下 (1) 新添加一块raw格式的磁盘加入到 ...
- 步步为营 .NET 代码重构学习笔记 十一
步步为营 .NET 代码重构学习笔记系列 步步为营 .NET 代码重构学习笔记 一.为何要代码重构 步步为营 .NET 代码重构学习笔记 二.提炼方法(Extract Method) 步步为营 .NE ...
最新文章
- 快手上市,蚂蚁酸了!不含主管人均收益1500万,蚂蚁不能比
- asp.net 发送邮件代码
- cocos2d-x 3.8.1的骨骼动画加载方法addArmatureFileInfo仍然存在问题
- mysql 连接数的最大数
- 有一个懂机械、懂焊接、懂电子的爹是什么概念。。。
- iOS 集成银联支付
- 支付宝招“找茬”程序员,年薪无上限;谷歌宣布实现“量子霸权”;node.js 13.0.3 发布 | 极客头条...
- 基于Java的办公用品管理系统的设计与实现
- 语法长难句-----名词和名词性从句
- python 分支结构 比较大小
- spark kryo java,在Spark中自定义Kryo序列化输入输出API
- Linux中如何查看命令帮助手册
- [论文笔记] Detection of Glottal Closure Instants from Speech Signals: CNN Method
- python:map_reduct_filter_sorted
- [Untiy]贪吃蛇大作战(一)——开始界面
- SQL语句怎么去掉字段不想要的字符?
- java开发桌球游戏源代码_Java学习的开端小游戏----桌球游戏
- mysql xtrabackup安装_xtrabackup安装及使用
- 怎么把http图片改成背景图HTML,web前端:将图片设置成页面的背景-网页页面设置...
- 世界最大花朵时隔20个月再度开花