167  
查询码:00001234
spiderflow可视化爬虫实践
作者: 潘帅 于 2023年08月10日 发布在分类 / 人防组 / 人防前端 下,并于 2023年08月10日 编辑

网络爬虫能够便捷的从网络上爬取各类所需数据,spiderflow是一款提供可视化界面的网络爬虫工具,通过流程化的配置过程实现数据的采集汇聚。本文以政府官方网站的新闻资讯爬取为例说明spiderflow的使用过程。

spiderflow的安装过程不再赘述,直接参考官方文档或者网络教程即可。

创建爬虫

打开spiderflow可视化界面,在爬虫列表界面中选择“添加爬虫”。

spiderflow提供了一个类似流程编辑器的操作界面,包含爬虫、变量、循环、注释、输出、SQL脚本、JS脚本、子流程等多种基本功能,常规的网络数据爬取需求都能实现,比较复杂的需求还是要费些功夫。

输入爬虫名称,保存后开始下一步编辑。

获取新闻列表

使用爬虫获取信息一般都是有目的性的,所以需要首先明确信息的来源,然后针对性的配置爬虫。选取一个目标站点,如湖南省国防动员办公室官网(http://rfb.hunan.gov.cn/),找到新闻列表页,如省办动态(http://rfb.hunan.gov.cn/rfb/xxgk_70641/gzdt/sbdt/index.html)。

添加爬虫,URL地址设为http://rfb.hunan.gov.cn/rfb/xxgk_70641/gzdt/sbdt/index.html,请求方式设为GET。

使用浏览器打开新闻列表页面,按F12调试工具查看页面元素结构。以此页面为例,需要获取table对象中的文档标题列。

添加变量,从爬虫抓取的response中筛选列表元素。以此页面为例,从请求返回的页面html中选择所有CSS类为wdbtb的对象,并将结果赋值给变量elementbd,代码如下。

${extract.selectors(resp.html,'.wdbtb')}

使用调试功能,测试结果如下。


获取新闻详情

在获取新闻列表后,再循环爬取获取新闻详情的具体内容。由于上一步获取的结果列表中包含了a对象,其href属性为详情页面的地址,通过url拼接的方式使用爬虫访问新闻详情页面。

添加爬虫,设置循环,遍历变量elementbd的所有子对象,查找每个子对象中的a元素,并取其href属性值,与网站域名拼接为详情页url地址,请求方法设为GET。代码如下:

http://rfb.hunan.gov.cn${extract.selector(elementbd[i+1],'a','attr','href')}

启动调试,测试结果如下。

用浏览器打开详情页,使用F12工具查看页面结构,目标是获取标题、副标题(含作者、发布时间等)、正文内容等。

添加变量,用于从爬虫返回的html中选取标题、副标题、内容等对象。

此处需要具备一定的前端基础知识(如html、CSS等),利用spiderflow提供的抽取函数筛选所需对象。

标题title                     ${extract.selector(resp.html,'.tys-main-zt h3','text')}
发布时间publishtime    ${extract.selectors(resp.html,'.tys-main-zt-aa','text')[1]}
原文链接href               ${resp.url}
正文内容content          ${extract.selector(resp.html,'.tys-main-zt-show')}

输出至数据库

配置输出项

增加输出,配置输出项,将上一步中的变量进行处理。

id ${string.uuid()}
id标识,自带函数
title ${title}
标题
herf ${href}
原文链接
publishtime ${publishtime.split(':')[1]}
新闻发布时间,将副标题文本拆分得到
content ${content}
正文内容,HTML
abstracts ${list2string(extract.selectors(content,'span','text'),120)}
正文摘要,正文中所有文本拼接后截取前段字符。list2string为自定义函数。
images ${addprefix(extract.selectors(content,'img','attr','src'),href.replace('.html',''))}
正文图片,正文中所有图片地址拼接网站域名为完整地址。addprefix为自定义函数。
gettime ${date.format(date.now(),'yyyy-MM-dd hh:mm:ss')}
爬虫爬取页面的时间,即当前时间,自带函数。

配置数据源

打开“数据源管理”,选择“添加数据源”,配置新的数据源。

数据源测试正常后,回到爬虫的输出节点配置界面,勾选“输出至数据库”,选择数据源并填入目标数据库表名。保存爬虫,开始启动。

爬虫进阶

批量爬虫

当需要爬取多个同类型站点是,由于每个站点的页面结构存在差异,需要单独配置爬虫,然后以子任务的形式将所有爬虫汇集到一起进行管理。

定时任务

爬虫配置完成后,想要定时更新信息,就需要配置定时任务了。使用常见的cron表达式配置定时任务,也提供有可视化界面。



 推荐知识

 历史版本

修改日期 修改人 备注
2023-08-10 17:28:59[当前版本] 潘帅 1.0

 附件

附件类型

PNGPNG

  目录
    知识分享平台 -V 4.8.7 -wcp