Python学习笔记(10)⽤⽹络爬⾍软件⾃动下载⽹页上的⽂件
举个例⼦,我们打算把这个法规/标准⽹站上的pdf格式的法规⽂件下载下来:
如果⼈⼯下载这些⽂件的话,需要在这个⽹页上逐个点击那些⽂件图标,即可激发下载过程。
下⾯将详细讲解定义规则和抓取过程。
1. 定义抓取规则
定义抓取规则的⽅法参看基础教程中的相应章节,请注意,这种标注是⼀种快捷的规则定义⽅法,但是并没有精确地定位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”是⾃动⽣成的抓取内容,⽂件在硬盘上存储在哪⾥,就⽤这个字段进⾏说明。
下载⽂件不分主题存放有个好处:如果要写⼀个⽂件处理程序,那么这个处理成就不需要逐个进⼊每个主题名⽂件夹去查看有没有新下载的⽂件。
相反,如果下载的⽂件按主题名分开存放的,处理程序要逐个检查主题名⽂件夹,但是有个好处:⽂件系统看起来⽐较有结构。
下⾯讲解怎样设置成按主题名分开存放。
python新手适合的软件4. 分主题存放
如图所⽰,在DS打数机上选择菜单 ⽂件->存储路径,在弹出框中选择“分主题存放”,改成分主题存放以后,再执⾏爬数据,就能看到PageFileDir⽂件夹放在了主题名⽂件夹下⾯
5. 总结
不光⽂件下载,还有图⽚和视频下载的过程都是⼀致的,结果存储结构也是⼀致的,本教程的⽅法可以推及到图⽚和视频的下载

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。