用网络爬虫工具点击下载pdf文件的方法

2021-8-2 16:10| 发布者: Fuller| 查看: 8413| 评论: 0

摘要: 1,要解决的问题巨潮资讯网上的pdf报告,点击报告链接,就会新建一个tab窗口,在新建窗口中加载显示pdf内容。这种情况比较复杂,技术背后实际上有一次跳转。新建窗口加载了一个网页,这个网页执行了前端发起的跳转, ...

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,查看下载描述文件

各种下载方式都会生成下载描述信息,只是有些描述信息记录在采集结果文件中,而这个情况下,下载描述信息记录在单独的文件中,存放位置如下图:

根据下载描述文件中的内容,可以查到文件实际上存到了硬盘上的哪个位置。所以,为了进一步处理被下载的文件,应该用程序解析下载描述文件。下载描述文件的内容如下图:


鲜花

握手

雷人

路过

鸡蛋

最新评论

GMT+8, 2024-3-29 00:00