1,要解决的问题 巨潮资讯网上的pdf报告,点击报告链接,就会新建一个tab窗口,在新建窗口中加载显示pdf内容。这种情况比较复杂,技术背后实际上有一次跳转。新建窗口加载了一个网页,这个网页执行了前端发起的跳转,访问了另一个网址,另一个网址才是真实的pdf网址。在V11.0.0之前的版本无法完成这种情形的下载,从V11.0.0开始,可以下载了。 在讲解处理这种情况之前,先总结一下,到V11.0.0版本网络爬虫软件,一共可以处理下面几种下载: 1. 【首选方法】在当前网页上,要下载的图片、视频、文件等等都有真实的网址,那么利用他们的网址,执行普通的下载,可以是: a. 被下载对象有真实网址:那么采集这个网址,同时设定“下载”选项。被下载对象可以是图片,也可以是视频和文件。具体参看《采集图片网址并下载图片(一)—— 单图下载》 b. 下载一个列表中的所有对象:在上述情形基础上,如果使用样例复制,可以下载一个列表中的所有图片、所有视频、所有文件。具体参看《采集图片网址并下载图片(二)——下载途牛多图》 c. 在一个网页区域中有多个被下载对象,但是他们没有排成有规律的列表,例如,淘宝商品详情信息中的所有图片,因为无规律排放,无法用样例复制下载他们,那么就用下载指定区域的所有图片或视频的方法,但是不能用于下载普通文件。具体参看《采集下载指定网页区域内的所有图片》 2. 【次选方法】在当前网页上,没有真实的图片、视频、文件的网址,需要点击以后才能激发下载,那么应该这样解决: a. 如果手工点击就能看到执行了下载(例如,zip文件,或者爬虫浏览器无法解析的其他格式的文件),那么只需做普通点击动作即可。动作后执行的目标任务名可以与当前任务名相同,这样可以省掉再定义一个规则的麻烦。 b. 如果手工点击以后没有执行下载,而是在浏览器窗口显示了某类内容,比如,pdf,那么需要定义连续点击动作,动作后执行的目标任务名应该跟当前任务不同,在目标任务的采集规则中,勾上“整体下载”。又可分成两种情况: i. 在当前浏览器窗口显示了内容:不用勾“弹窗模式” ii. 在新浏览器窗口中显示了内容:勾上“弹窗模式” 下载巨潮资讯网上的pdf报告就属于 2-b-ii 这种情形,下面将详细讲解定义规则步骤。 2,在列表页上定义第一级规则 如下图,定义点击动作,有如下设置: 1. 输入的动作后的目标任务名与当前任务名不同 2. 因为点击以后会新建爬虫窗口,所以,勾上“弹窗模式” 3. 如果要逐个点击列表中所有报告,那么交互位置输入框那里输入的xpath能定位到每一个报告 3,在pdf报告页上定义第二级规则 3.1,创建整理箱 在普通浏览器模式下,点击其中一篇报告,会看到新建了一个浏览器窗口,窗口中显示了一个pdf文件。进入定义规则模式,针对pdf文件定义采集规则跟针对普通网页是一样的。在这里要定义一个最简单,最通用的规则,因为我们的目标不是采集pdf中的内容,而是下载pdf。所以,如下图,只是采集pdf文件名。 3.2,设置“整体下载” 如下图,在第5个工作台上,有个选项“整体下载”。勾上以后,表示当前浏览器窗口看到的内容将作为一个整体,存成磁盘文件。例如,如果浏览器地址输入栏显示的是一个html网址,那么,就把html文档存下来。如果地址输入栏显示的是一个json结构的网址,那么,就把json结构存下来。如果地址输入栏显示的是一个pdf网址,那么,就把pdf文件存下来。 4,观察运行结果 4.1,观察是否下载了文件 要运行第一级规则,不能直接运行第二级规则。运行正常的话,可以看到激发了下载,浏览器窗口下部的下载状态条上显示了被下载的文件名。如下图 4.2,查看下载描述文件 各种下载方式都会生成下载描述信息,只是有些描述信息记录在采集结果文件中,而这个情况下,下载描述信息记录在单独的文件中,存放位置如下图: 根据下载描述文件中的内容,可以查到文件实际上存到了硬盘上的哪个位置。所以,为了进一步处理被下载的文件,应该用程序解析下载描述文件。下载描述文件的内容如下图: |