用网络爬虫软件自动下载网页上的文件

2019-2-12 18:40| 发布者: Fuller| 查看: 34261| 评论: 1

摘要: 集搜客网络爬虫软件V9.0.0版本之前,就是模拟人工点击。到了V9.0.0版本,不再定义模拟点击,而是把文件图标对应的url网址作为抓取内容抓取下来,同时设置一个选项“下载文件”,那么爬虫采集到url信息后就启动下载过 ...

配套软件版本:V9及更低 集搜客网络爬虫软件

新版本对应教程:V10及更高 数据管家——增强版网络爬虫 的对应教程是《用网络爬虫软件自动下载网页上的文件


注:集搜客GooSeeker爬虫从V9.0.2版本开始,爬虫术语“主题”统一改为“任务”,在爬虫浏览器里先命名任务再创建规则,然后登录集搜客官网会员中心的“任务管理”里,就可以查看任务的采集执行情况、管理线索网址以及做调度设置了。

举个例子,我们打算把这个法规/标准网站上的pdf格式的法规文件下载下来:https://www.elegislation.gov.hk/index/chapternumber?p0=1&TYPE=1&TYPE=2&TYPE=3&LANGUAGE=E
页面截图如下图:

如果人工下载这些文件的话,需要在这个网页上逐个点击那些文件图标,即可激发下载过程。

集搜客网络爬虫软件V9.0.0版本之前,就是这样模拟点击的(参看教程:https://www.gooseeker.com/doc/article-175-1.html )。但是从V9.0.0版本开始,下载功能做了调整,因为定义模拟点击过程的规则太麻烦,而且不太好理解为什么那么定义。到了V9.0.0版本,不再定义模拟点击,而是把文件图标对应的url网址作为抓取内容抓取下来,同时设置一个选项“下载文件”,那么爬虫采集到url信息后就启动下载过程。定义规则的方法简单了很多。

另外,V9.0.0开始还有一个区别:以前版本激发下载以后,存储位置是在操作系统的“下载”文件夹,而V9.0.0的下载位置是可控的,或者放在各个抓取规则的各自的文件夹中,或者放在结果文件DataScraperWorks文件夹中。

注意:这个方法能够生效的前提是下载文件链接对应一个实实在在的网址,如果是类似javascript:void(0)这样的代码,不能用这个方法,应该定义连续动作的方法,用动作激发下载操作。

下面将详细讲解定义规则和抓取过程。

1. 定义抓取规则

定义抓取规则的方法参看基础教程中的相应章节,比如,最基础的教程是这个:https://www.gooseeker.com/doc/article-325-1.html 。该教程讲解了用内容标注的方法在网页上标注要采集的内容。请注意,这种标注是一种快捷的规则定义方法,但是并没有精确地定位HTML DOM节点,比如,在英文附件那个图标上做内容标注,会自动定位到DOM的IMG节点。为了下载pdf文件,定位到这个IMG节点是不精确的,这种内容标注主要用于采集文本内容。
为了精确地把pdf文件的url网址抓取下来,应该精确地做内容映射,如下图:

步骤如下:

  1. 在文件图标上通过双击做内容标注,并且命名抓取内容为“英文附件链接”
  2. 观察窗口下部的DOM树,看到自动定位到了IMG,而我们需要这个图标对应的url,用以下载文件。通过观察DOM树,可以确定url存于IMG的父节点A中的属性节点@href中。
  3. 选中@href节点,用鼠标右键菜单 内容映射->英文附件链接,就可把@href映射给英文附件链接这个抓取内容。做了映射以后,就能看到工作台上的这个抓取内容的定位编号变化了。

上述过程就是普通的定义抓取规则过程,下面将是跟下载文件有关的设置过程。

2. 设置下载

如下图,选择“下载内容”,就能弹出设置窗口,勾选“下载文件”就表示从抓取到的url网址下载文件。下面的截图中还勾选了高级设置的“补全内容”选项,这个跟下载内容无关,目的是在生成的结果文件中显示网址的网址,因为从上一个截图看,@href里面存的是相对网址,不是从http开头的。

这些设置完成以后,点击存规则,然后再点击爬数据,就能弹出一个DS打数机窗口,可以观察到网页被加载上来,采集完成后变成了白屏。

3. 查看下载的文件

如下图,本案例用的主题名是test_download_file_fuller,结果文件都放在DataScraperWorks文件夹中,test_download_file_fuller是一个子文件夹,用于存储XML格式的结果文件,还可以看到一个并列的子文件夹PageFileDir,用于存储所有的下载文件

在PageFileDir中,所有的下载文件都放在一起,不分主题名,而是分在PageFileDir中的子文件夹中,子文件夹的名字具有这样的结构

线索号_时间戳

我们再打开XML格式的结果文件看一下内容结构,如下图:

“英文附件链接”是用户定义的抓取内容,而“英文附件链接_file”是自动生成的抓取内容,文件在硬盘上存储在哪里,就用这个字段进行说明。

下载文件不分主题存放有个好处:如果要写一个文件处理程序,那么这个处理成就不需要逐个进入每个主题名文件夹去查看有没有新下载的文件。

相反,如果下载的文件按主题名分开存放的,处理程序要逐个检查主题名文件夹,但是有个好处:文件系统看起来比较有结构。

下面讲解怎样设置成按主题名分开存放。

4. 分主题存放

如图所示,在DS打数机上选择菜单 文件->存储路径,在弹出框中选择“分主题存放”,改成分主题存放以后,再执行爬数据,就能看到PageFileDir文件夹放在了主题名文件夹下面

5. 总结

从V9.0.0开始,不光文件下载,还有图片和视频下载的过程都是一致的,结果存储结构也是一致的,本教程的方法可以推及到图片和视频的下载

1

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (1 人)

发表评论

最新评论

评论 wangyong 2020-10-20 09:36
集搜客团队提供定制下服务:https://www.gooseeker.com/about/charge_data.html,有需要的朋友可以在这个链接上发起咨询

查看全部评论(1)

GMT+8, 2024-10-13 10:22