他是这样的结构:
  1. <DIV> //这里是整个商品列表的内容
  2.    <DIV> //这里是第一行的需要采集的商品内容
  3. <DL>1
  4. <DL>2
  5. <DL>3
  6. <DL>4
  7.    </DIV>

  8.    <DIV> //这里是第二行的需要采集的商品内容
  9. <DL>1
  10. <DL>2
  11. <DL>3
  12. <DL>4
  13.    </DIV>
  14. .
  15.    . //n行商品
  16.    <DIV> //这里是第一行的推荐店内的商品内容,并不需要采集,否则就重复了
  17. <DL>1
  18. <DL>2
  19. <DL>3
  20. <DL>4
  21.    </DIV>
  22.    .
  23.    .
  24.    n行店内推荐之后

  25. </DIV> //整个列表结束
复制代码
我想表达的意思是,不管是商品列表,还是推荐商品列表,都是在一个<DIV>里面的。
那么采用样例复制的时候,
我没办法告诉程序:

只采集上面8行,
然后就翻页,
下面不管再有什么都不用采集。

这样将商品和推荐的区分开。
这就导致我采集了非常多的重复项,
后期数据合并非常麻烦。
同一个东西可能出现几百次。

不知道有没有办法解决这个问题。
十分感谢!


举报 使用道具
| 回复

共 3 个关于本帖的回复 最后回复于 2016-12-12 09:43

沙发
Fuller 管理员 发表于 2016-12-12 00:10:24 | 只看该作者
应该这样设法去解决:
1)商品列表和推荐商品列表的div的class可能不同,如果不同,用上定位标志映射就能区分
2)商品列表可能在一个大的DIV中,推荐商品列表可能在另一个大的DIV中,那么定义整理箱的时候,在顶层容器节点下面再创建一层容器节点,要抓取的内容放在下层容器节点中。在下层容器节点上做样例复制映射,而顶层容器节点用于做定位标志映射。

总之,定位标志映射主要是用来划定范围的。贴出来一个样本网址来吧。
举报 使用道具
板凳
redwindy 中级会员 发表于 2016-12-12 09:20:55 | 只看该作者
Fuller 发表于 2016-12-12 00:10
应该这样设法去解决:
1)商品列表和推荐商品列表的div的class可能不同,如果不同,用上定位标志映射就能区 ...

https://trumpeter.tmall.com/sear ... v1YBvP&search=y

样本页在这里。就打算采集这个页面。
这个前端也是有意思,
商品列表,
翻页列表,
推荐列表,
全放一个大DIV里面。
一采集就全采了,
结果最后拿到手的数据一大堆都是重复的,毫无意义。

举报 使用道具
地板
Fuller 管理员 发表于 2016-12-12 09:43:11 | 只看该作者
redwindy 发表于 2016-12-12 09:20
https://trumpeter.tmall.com/search.htm?spm=a1z10.1-b.0.0.v1YBvP&search=y

样本页在这里。就打算采集 ...


推荐商品和上面的商品列表中间是用翻页区隔开的。可以用自定义xpath的方法,指定翻页区上面的才抓取。

定义规则的时候,不用样例复制,而是用定位标志映射来抓多样例。然后点击“测试”按钮,就能看到输出窗口,点“数据规则”能看到抓取规则,是一个XSLT程序,可以手工修改。注意,要先“存规则”再手工修改,最后用“保存修改”按钮,就能把修改后的规则保存下来。

抓取多样例,那么要修改的XPath是关于整理箱容器节点,它的XPath出现在两个位置,修改后可以点击测试看看是否对
举报 使用道具
您需要登录后才可以回帖 登录 | 立即注册

精彩推荐

  • Gephi社会网络分析-马蜂窝游记文本分词并同
  • Gephi社会网络分析-基于马蜂窝游记文本以词
  • 知乎话题文本根据词语间距筛选后生成共词矩
  • 马蜂窝游记文本分词后以词语间距为筛选条件
  • 学习使用apriori算法挖掘关联关系

热门用户

GMT+8, 2024-4-29 18:31