如何深入多层级网页采集数据——以采集京东商品信息为例

2015-8-12 10:14| 发布者: HJLing| 查看: 41512| 评论: 18

摘要: 从网站上采集数据,尤其采集大型网站时,被采集的数据往往位于网站的不同层级的网页上,要采集从当前页面(第一级页面)点击后弹出的网页(第二级页面)的内容时就要规划DS打数机的爬行路线,实现层级抓取。 实现层 ...
观看视频教程

从网站上采集数据,尤其采集大型网站时,被采集的数据往往位于网站的不同层级的网页上,要采集从当前页面(第一级页面)点击后弹出的网页(第二级页面)的内容时就要规划DS打数机的爬行路线,实现层级抓取。

实现层级抓取需要做两级规则,第一级规则抓取第二级页面的网址,作为第二级抓取规则的线索。第二级规则确定要抓取网页上的那些内容。下面以京东搜索列表(第一级)和京东产品页详细页面(第二级)为例来讲解具体的步骤。

  • 注释1:用MS谋数台定义网站抓取规则时不用考虑顺序,但是,为了写作的方便,我们先定义第一级再定义第二级。
  • 注释2:本文不再为每一步做截图,MS谋数台的详细操作步骤参看集搜客入门——三步掌握集搜客


创建第一级规则

  • 在整理箱中创建抓取内容,抓取第二级页面的网址
  • 本文中演示第一级规则,可在资源库中下载学习层级抓取_京东搜索列表

图1 定义第一级规则抓取第二级网址

图1步骤分解:

  1. 选择抓取目标:在MS谋数台的浏览器中点击包含第二级网址链接的区域(上图最下面的红框),则对应的网页节点会在网页标签栏中显示(最左边的红框)。
  2. 做内容映射:为对应第二级页面的网址信息,即@href节点,做内容映射到整理箱中的第二级网址抓取内容(最右边的红框)。
  3. 勾选下级线索:在整理箱中选中第二级网址后勾选下级线索(右上红框),MS谋数台会自动生成一条线索(请到爬虫路线工作台去看)。

注释,做完内容映射后,可以点击测试按钮,看看抓取的内容是否正确,如果正确,接下来做样例复制映射,才能把所有商品抓下来,从而就能抓取网页上所有第二级页面地址,样例复制管理功能本章不再详述,请看经验合集:http://www.gooseeker.com/doc/thread-706-1-1.html

  • 在爬虫路线工作台填写下级线索指向的规则主题名,也就是第二级规则抓取京东产品页面的规则

图2 规划爬虫路线

图2步骤分解:

  1. 因为在创建规则工作台上为抓取内容第二级网址勾选了下级线索,在爬虫路线工作台上就会创建一条名为线索1的下级线索。表示利用第二级网址抓取的内容创建了一条线索 。
  2. 线索1创建后默认指向的规则是当前规则,这时就需要人工填写下级抓取规则的主题名,填写与命名主题工作台里不同的规则主题名,也就是第二级规则的主题名。
  3. 填写完第二级规则主题名后需要点击“谁在用”按钮,查看填写的主题名是否已经被占用,主题是唯一的,不能重复,如果点击“谁在用”后显示该主题名已经被他人占用就需重新填写主题名。
  4. 在这里填写下级规则名后,虽然规则还没有创建,但是这已经代表这个规则的编辑权限被你预定了,其他人没有权限编写。点击保存规则后就可以去创建第二级页面的抓取规则了。


创建第二级抓取规则

  • 保存完第一级规则后就可以将MS谋数台关掉,然后重新打开,开始编辑第二级规则。
  • Tips:第一级规则一定要点击存规则后才能关掉MS谋数台,要不然之前做的规则就白做了。
  • 填写第一级中预定的主题名
  • 本文中演示第二级规则,可在资源库中下载学习层级抓取_京东产品页面

图3 填写第一级中预定的主题名

图3步骤分解:

  1. 填写已经在第一级中预定的第二级规则主题名,在第一级抓取到的线索都会指向这个被预定的规则。
  2. 点击查重后可查看刚填写的主题名是否被你预定。
  3. 显示该名已经被预定可编辑。
  • 确定抓取内容

图4 定义第二级抓取规则

将网页上的目标抓取内容映射到整理箱中后保存规则。

  • 启动DS打数机进行抓取

图5 启动DS打数机

第一级规则成功运行后会为第二级规则产生线索,统计第二级规则线索就可以看到第一级为第二级生成的线索。

图6 手动输出要抓取线索数

手工用DS打数机抓取第二级网页时,在线索框内输入多少条线索,打数机一次性就会抓取几条,比如这次输入了56条,打数机一次性就会抓取56个网页。


Tips:层级规则抓取数据步骤

两级抓取规则定义完成后,就可以用DS打数机进行数据抓取了。既可以手工启动DS打数机:先抓取第一级然后抓取第二级;又可以使用定时自启动功能进行自动抓取,而且可以将两级抓取放在两个不同的线程中并行抓取,甚至因为第二级数据比较多从而启动更多个线程或分布在多台计算机上。用户对两级抓取可能一开始理解的不正确,请注意:DS打数机并不能自动从第一级导航到第二级,而是像搜索引擎的网络爬虫一样同等对待这两级,所以这两个可以并行在两个线程中分别抓取。

Tips:第一级规则采集到的不完整网址会自动补全,不影响第二级网页的抓取

层级抓取时,第一级要抓网址,部分网站上采集到网页链接是缺少域名的网址,这是正常现象,因为很多网站内部的网页是用相对网址显示的,所以就只能看到缺少域名的网址,但是这不会影响集搜客抓取数据,DS打数机在第一级网址时,会把域名自动补上再生成下级线索,虽然数据文件里显示的是不完整的网址,但是给下一级生成的线索网址是具有域名的完整网址。

Tips:为什么层级网页的第二级或更深级别的失败率很高?

在抓取层级网页时,一般来说,第二级或更深级别的页面大部分是具有多种网页结构形式的,而一个网页结构需要一个规则来抓取,这就说明,第二级网页或更深级别的网页只做一个规则是不足以抓取到全部页面的数据,当规则与网页结构不匹配时就会抓取失败,所以,通常是要分析网页有多少种结构,然后针对每一种网页结构做规则,这样,第二级网页或更深级别的网页就要根据实际情况来做多个抓取规则,通过在一个主题名下做多个规则(用规则编号区分就可以),这样,第一级规则的网址还是指向一个主题名就可以了。当然,熟练使用集搜客软件的人是可以根据不同网页结构的共同点,制作出一个通用的规则来抓取全部网页数据,这样就能用最少量的规则来抓取数据。

若有疑问可以集搜客网络爬虫
73

鲜花
3

握手
2

雷人
1

路过
4

鸡蛋

刚表态过的朋友 (83 人)

相关阅读

发表评论

最新评论

评论 Fuller 2018-3-7 17:46
Jason7227: 我现在遇到的问题是,第一层级和第二层级线索有关联了,但是第三层级和第二层级没有上下关系,下级关系那里我已经设置了第三层级,但是第二层级运行采集的网址不 ...
如果问题解决不了,在论坛那里发帖,贴出来主题名,管理员可以做诊断,还可以贴图给你看。这里帖不了图。http://www.gooseeker.com/doc/forum-54-1.html
评论 bowieD 2018-3-7 17:41
Jason7227: 我现在遇到的问题是,第一层级和第二层级线索有关联了,但是第三层级和第二层级没有上下关系,下级关系那里我已经设置了第三层级,但是第二层级运行采集的网址不 ...
第二层和第三层没有对应上,检查一下第二层规则的下级线索的目标主题名与第三层的主题名是否一致,如果不一致就是没对应上,需要修改
评论 Jason7227 2018-3-7 17:04
Fuller: 如果你按照这个教程做的层级抓取,那么每一层都是独立运行的,前一层为后一层生成线索,但是他们的运行顺序没有绑死,你还可以用爬虫群模式同时运行3个窗口,每 ...
我现在遇到的问题是,第一层级和第二层级线索有关联了,但是第三层级和第二层级没有上下关系,下级关系那里我已经设置了第三层级,但是第二层级运行采集的网址不属于第三层级,这是什么原因呢。
评论 Fuller 2018-3-7 14:44
Jason7227: 如何进行第三层级页面信息抓取呢?
如果你按照这个教程做的层级抓取,那么每一层都是独立运行的,前一层为后一层生成线索,但是他们的运行顺序没有绑死,你还可以用爬虫群模式同时运行3个窗口,每个窗口运行一级
评论 Jason7227 2018-3-7 14:35
如何进行第三层级页面信息抓取呢?
评论 Fuller 2017-6-1 15:32
wingoowin: 第二级有的抓取的内容位置不一样怎么办?
要具体看网址才能提供准确的建议,你可以在论坛版块发一个帖子,帖几个样本网址,我们看看,也许调整一下定位参数就能解决
评论 xandy 2017-6-1 14:10
wingoowin: 第二级有的抓取的内容位置不一样怎么办?
用自定义xpath
评论 wingoowin 2017-6-1 13:30
第二级有的抓取的内容位置不一样怎么办?
评论 Fuller 2016-9-3 16:46
ShelleyWu: 请问如果下级的不是特定指向的url, 而是javascript, 目前有办法做处理吗?
如果这样的下级在网页上只有一个,那么类似于翻页,做一个连贯抓取线索。如果这样的有多个,那么要做连续动作
评论 ShelleyWu 2016-9-3 14:41
请问如果下级的不是特定指向的url, 而是javascript, 目前有办法做处理吗?
评论 Fuller 2016-8-15 22:31
mz2358639: 如果是需要第一级网址翻页,要怎么办?
在教程首页,搜索“层级 翻页”,能看到相关介绍:http://www.gooseeker.com/tuto/tutorial.html
评论 mz2358639 2016-8-15 21:33
如果是需要第一级网址翻页,要怎么办?
评论 风景不在对岸 2016-6-13 15:08
按照上面步骤做京东的没有问题,为什么我用微博抓取的时候,启用样例复制,采集到的url都是javascript:void(0);
评论 Fuller 2015-12-12 23:37
灬奔跑人生: 创建第一级规则的注释有误解吧,是抓取商品的样例复制。
感谢指正,这段文字已经做了修改
评论 灬奔跑人生 2015-12-12 21:24
创建第一级规则的注释有误解吧,是抓取商品的样例复制。
评论 gooseeker_info 2015-8-27 15:55
@lalalaav ,说明这个主题名被别人占用了,输入主题名以后,右边有个按钮“谁在用”,查一下是否有人占用
评论 wangyong 2015-8-27 15:22
lalalaav: 为什么我完成这一步“    在爬虫路线工作台填写下级线索指向的规则主题名,也就是第二级规则抓取京东产品页面的规则”点保存时,出现了“保存信息结构描述文件失 ...
查看第一级、第二级主题名是否已经被占用
评论 lalalaav 2015-8-25 15:52
为什么我完成这一步“    在爬虫路线工作台填写下级线索指向的规则主题名,也就是第二级规则抓取京东产品页面的规则”点保存时,出现了“保存信息结构描述文件失败:not writable”?

查看全部评论(18)

GMT+8, 2024-10-31 12:54