609 Star 2.1K Fork 750

自风 / Spiderman2

 / 详情

抽取列表页面时的Bug

已完成
创建于  
2016-05-09 23:35

ResultTask#getKey方法如下:

public String getKey() {
		return "result_" + result.getPageName() + "#" + result.getModelName() + "#" + getSeed().getUrl() + "#" + getRequest().getUrl();
	}

这时,如果抽取一个列表页(如CSDN的博客列表页),每个列表项是一个Model对象,这时getKey方法对这个页面所有的Model封装成的ResultTask对象都返回同一个值,这时,所有列表项,只有第一个会加入到TaskManager#resultQueue。我的解决方案如下:

public String getKey() {
		return "result_" + result.getPageName() + "#" + result.getModelName() + "#" + getSeed().getUrl() + "#" + getRequest().getUrl() + "#" + result.getFields();
	}

加入field元素,而且是所有的field组成的字符串。这时,如果一个模型对象的所有field都一样的话,就没有二次抽取的必要了,如果有一点不一样的话,就不会被当做重复的了。

评论 (2)

可以,测试通过后请发PullRequest

状态更改为 已关闭

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(2)
117 l weiwei 1578913730
Java
1
https://gitee.com/l-weiwei/Spiderman2.git
git@gitee.com:l-weiwei/Spiderman2.git
l-weiwei
Spiderman2
Spiderman2

搜索帮助