一个网页上结构相同的数据有很多条,就需要做一个样例复制来批量采集。但是有些网页相同结构的数据又分别包含在不同区块节点中,这种情况下,需要做两次样例复制或更多次(由实际情况决定),即多层嵌套的样例复制。
以抓取新浪新闻为例http://roll.sky.news.sina.com.cn/index/index_1.shtml,网页上每5条新闻存放在一个区块节点中,如果按照样例复制教程只做样例复制,只会抓取到当前区块节点下的这5条新闻。然而页面上一共显示35条新闻,分放在7个区块节点中,为了将页面上的所有新闻抓取下来,需要再对包含新闻的区块节点做样例复制。
一、 建立多层嵌套的整理箱
如图1所示,具体操作如下
1. 新建第一级整理箱,用来为包含新闻的区块节点做样例复制。
2. 右击第一级整理箱,选择包含包创建第二级整理箱,用来为每条新闻做样例复制。
3. 右击第二级整理箱,选择包容创建抓取内容,抓取每条新闻的标题,发布时间。
这样就形成了嵌套整理箱,可以做两次样例复制,顺序是从里到外。
二、先对内层做样例复制
图2
如图2所示,具体操作如下
1.点击第二级整理箱
2.勾选启用,启用 样例复制 功能。
3.分别找到第一个商品 和 第二个商品 对应的节点。
4.右击 第一条新闻对应节点 样例复制的 “第一个” 映射到 样例1。
5.右击 第一条新闻对应节点 样例复制的 “第二个” 映射到 样例2。
由上图可以看出,一个UL区块节点里包含5个LI节点,一个LI节点对应的就是一条新闻,现在只是对一个UL里的LI做了样例复制,只能抓取当前UL下的新闻,也就是只能抓取5条新闻。为了将所有新闻抓取下来,下面我们对UL也做一次样例复制。
三、 再对外层做样例复制
图3
如图3所示,具体操作如下
1.点击第一级整理箱
2.勾选启用,启用 样例复制 功能。
3.将第一个UL和第二个UL分别做样例复制映射到“第一个”和“第一个”
这样就可以将页面上所有的新闻都抓取下来了。