CN114491206A - 一种用于新闻博客类网站的通用低代码爬虫方法及*** - Google Patents
一种用于新闻博客类网站的通用低代码爬虫方法及*** Download PDFInfo
- Publication number
- CN114491206A CN114491206A CN202210001246.5A CN202210001246A CN114491206A CN 114491206 A CN114491206 A CN 114491206A CN 202210001246 A CN202210001246 A CN 202210001246A CN 114491206 A CN114491206 A CN 114491206A
- Authority
- CN
- China
- Prior art keywords
- article
- website
- data
- configuration
- crawling
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000009193 crawling Effects 0.000 claims abstract description 78
- 238000013075 data extraction Methods 0.000 claims description 43
- 238000012545 processing Methods 0.000 claims description 29
- 230000006870 function Effects 0.000 claims description 26
- 238000007726 management method Methods 0.000 claims description 20
- 238000013500 data storage Methods 0.000 claims description 13
- 230000008569 process Effects 0.000 claims description 13
- 230000002159 abnormal effect Effects 0.000 claims description 12
- 238000012795 verification Methods 0.000 claims description 10
- 238000001914 filtration Methods 0.000 claims description 7
- 230000003068 static effect Effects 0.000 claims description 7
- 238000006243 chemical reaction Methods 0.000 claims description 4
- 238000012216 screening Methods 0.000 claims description 4
- 238000000605 extraction Methods 0.000 claims description 3
- 230000003993 interaction Effects 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 10
- 238000012423 maintenance Methods 0.000 abstract description 4
- 230000002085 persistent effect Effects 0.000 abstract 2
- 238000010586 diagram Methods 0.000 description 4
- 239000000284 extract Substances 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004880 explosion Methods 0.000 description 1
- 238000007499 fusion processing Methods 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/954—Navigation, e.g. using categorised browsing
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明公开一种用于新闻博客类网站的通用低代码爬虫方法及***,属于网络爬虫技术领域。方法的核心步骤包括:创建各待爬取网站的配置文件;选择运行方式并加载目标网站的各项配置;提取目标网站导航栏中所有分类导航的链接及类别名;对各分类导航链接,提取文章列表页面的所有文章链接并加入待爬取列表;对待爬取列表中各文章,提取文章页面资源中的各项信息并进行持久化存储;重复执行直至完成所有爬取任务。爬虫***提供的能力主要包括自定义功能扩展、多任务管理、多种方式持久化存储、兼容不同类型网站、日志及进度管理等方面。本发明只需添加待爬取网站的各项配置,即可完成满足基本需求的文章爬取,大幅度提升爬虫程序开发和维护效率。
Description
技术领域
本发明属于网络爬虫技术领域,具体涉及一种用于新闻博客类网站的通用低代码爬虫方法及***。
背景技术
在信息***的互联网时代,依靠人工采集数据已不再可行,网络爬虫程序成为了获取各类网络数据资源的一种重要手段。其中从各种新闻博客类网站(特别是新闻类网站)爬取各类新闻/文章数据(注:新闻和文章在本发明专利描述中指代同一个概念)是一大主要数据采集方法,采集后的数据通常可被用于数据库索引构建、新闻资源整合、数据挖掘或者AI模型训练等。
目前,主流的爬取技术方向分以下两种:
第一种是针对不同的网站开发特定的爬虫程序。
不同网站的内容组织方式不同,网页结构各异,因而想要获取需要的数据,需要人为对每个网站进行元素解析,从获取网页链接到数据清洗都需要编写特定的代码进行处理。
当开发多数据源爬虫程序时(多个网站的爬虫),上述方法的缺点很容易就凸显出来。首先,每个网站都需要进行特定的分析,编写特定的代码处理,将带来大量的时间和人力消耗;其次,每个网站编写代码不同,当网页数量较多时难以维护;最后,各个网站的整体架构可能随时会有变动,每个小小的结构变动都可能让这种只适配于某个特定结构网站的爬虫失效。
第二种是基于主流的爬虫框架。
随着爬虫技术的发展,一些成熟的爬虫框架如Scrapy,将网页采集的通用功能集成到各个模块中,程序员在开发爬虫程序时只需关注自己的爬取需求,按照框架的使用规范直接调用各个模块完成爬虫程序的开发。
但这种方法在实际应用中也并非完美,成熟的框架意味着较高的开发学习成本,由于爬虫框架兼顾各种爬虫需求,但面对特定的领域和需求时很多功能依然需要自己编写,开发多个网站的爬虫程序时开发成本依然较高。除此之外,基于框架的编写也可能带来较多的内存消耗和较高的调试难度。
由于绝大多数新闻博客类网站在网页布局结构上具有一定的通用性,通常依照“分类导航”——>“各分类下文章列表”——>“文章具体内容”的结构进行布局,因此设计一种针对这类网站的爬虫开发框架可以高效地实现爬虫程序的开发和维护,也可以同时解决以上两种主流技术路线的不足之处。
发明内容
本发明针对上述现有技术中存在的问题,提出了一种用于新闻博客类网站的通用低代码爬虫方法及***,只需人工添加待爬取网站的各项配置,即可完成一个满足基本需求的新闻爬取,大幅度提升新闻博客类网站的爬虫程序开发和维护效率。
本发明所采用的技术方案如下:
一种用于新闻博客类网站的通用低代码爬虫方法,其特征在于,包括以下步骤:
步骤1:对所有待爬取网站,手动创建各待爬取网站的配置文件并填入各配置项;
步骤2:开始运行,选择运行方式并确定待爬取网站中的目标网站,加载目标网站的各配置项并进行配置校验;
步骤3:请求并获取目标网站首页,提取导航栏的所有分类导航链接及对应类别名;
步骤4:对各分类导航链接,请求并获取对应分类导航链接的文章列表页面,提取所有文章链接,并加入待爬取列表;
步骤5:请求并获取待爬取列表中文章链接对应的网页资源,根据对应配置文件提取网页资源中的各项信息,作为爬取数据;
步骤6:对爬取数据进行智能校验,过滤异常数据后存入数据库或本地文件;
步骤7:重复步骤5和步骤6,直至完成待爬取列表中所有文章链接的爬取,至此完成所述目标网站的爬取。
进一步地,步骤1创建的配置文件中包括基础配置、存储配置、各数据项选择器配置和其他配置;其中,基础配置包括网站的名称、类型、编码格式、首页地址等信息配置,所述网站类型包括动态网站和静态网站;存储配置包括数据存储方式、本地存储路径、数据库各项信息配置和日志及进度的存储目录配置;各数据项选择器配置包括分类导航链接、文章链接、文章内容、文章摘要、文章标题、文章日期和文章作者的数据提取表达式类型,数据提取表达式类型具体有css数据提取功能和xpath数据提取功能两种;其他配置包括网络请求频率,单次运行最大数据爬取量,多分类导航并发爬取配置项,和文章列表页面的分页参数配置、翻页操作配置及起始页码。
进一步地,步骤2中的运行方式包括单网站爬取、多网站串行爬取和多网站并发爬取。
进一步地,当所选运行方式为单网站爬取时,步骤2通过命令行交互确定目标网站。
进一步地,当所选运行方式为多网站串行爬取时,步骤2将所有待爬取网站依次作为目标网站。
进一步地,当所选运行方式为多网站并发爬取时,步骤2根据***资源负载情况自动确定同时进行的任务分支数量,各任务分支的上一个目标网站爬取完成后进行下一个目标网站爬取,直至所有待爬取网站均作为目标网站。
进一步地,步骤3的具体过程为:
步骤3.1:根据配置文件中填入的目标网站首页地址和网站类型,向目标网站发送请求,验证请求反馈的状态码和网页文本,若状态码为200,则成功获取目标网站首页;若请求发送失败或状态码为非200,则重复发送请求最多3次,若仍请求失败则终止目标网站的爬取,同时输出相应的错误提示信息并记录到日志中;
步骤3.2:将目标网站首页转换为包含目标网站首页各项元素节点的目标网站结构化对象;
步骤3.3:基于配置文件中填入的分类导航链接的数据提取表达式类型,在目标网站结构化对象中提取导航栏的所有分类导航链接及对应类别名。
进一步地,步骤4的具体过程为:
步骤4.1:对各分类导航链接,根据分类导航链接和网站类型,向分类导航链接指向的文章列表页面发送请求,验证请求反馈的状态码和网页文本,若状态码为200,则成功获取文章列表页面;若请求发送失败或状态码为非200,则重复发送请求最多3次,若仍请求失败则结束分类导航链接指向的文章列表页面的爬取,同时输出相应的错误提示信息并记录到日志中;
步骤4.2:将文章列表页面转换为包含文章列表页面各项元素节点的文章列表页面结构化对象;
步骤4.3:基于配置文件中填入的文章链接的数据提取表达式类型,在文章列表页面结构化对象中提取所有文章链接,判断所提取的文章链接是否完整,若不完整,则进行智能拼接补全处理,将补全后的文章链接加入待爬取列表。
进一步地,步骤1创建的配置文件中还包括多分类导航并发爬取配置项,若目标网站启用多分类导航并发爬取配置项,则步骤4同时进行多个分类导航链接的爬取。
进一步地,步骤5的具体过程为:
步骤5.1:根据文章链接和网站类型,向文章链接指向的文章网页资源发送请求,验证请求反馈的状态码和网页文本,若状态码为200,则成功获取文章网页资源;若请求发送失败或状态码为非200,则重复发送请求最多3次,若仍请求失败则跳过当前文章链接,并继续进行待爬取列表中下一文章链接指向的文章网页资源的爬取,同时输出相应的错误提示信息并记录到日志中;
步骤5.2:将文章网页资源转换为包含文章网页资源各项元素节点的文章网页资源结构化对象;
步骤5.3:基于配置文件中填入的文章内容、文章摘要、文章标题、文章日期和文章作者的数据提取表达式类型,在文章网页资源结构化对象中提取对应的文章内容、文章摘要、文章标题、文章日期和文章作者,作为爬取数据;若网页资源存在信息缺失,则进行补空值处理,当文章日期缺失时,补空为获取当前文章网页资源的时间。
进一步地,步骤6的具体过程为:
步骤6.1:对爬取数据的各字段进行智能校验,若存在字段缺失或异常,则判断为无效数据不予存入,输出无效信息提示并将对应的文章链接记录到日志中;
步骤6.2:将智能校验成功的爬取数据中的文章内容和文章标题作为判重条件,判断数据库或本地文件中是否已存有相同数据,若出现重复,则将文章链接记录到日志中;否则,将爬取数据存入数据库或本地文件。
进一步地,在步骤1中根据实际需求,在爬虫代码文件目录中的指定代码文件中添加自定义处理代码段,并在步骤5提取爬取数据后,执行自定义处理代码段;所述自定义处理代码段执行的功能包括额外信息提取、格式转换、二次处理或自定义过滤筛选等。
一种用于新闻博客类网站的通用低代码爬虫***,其特征在于,包括配置加载模块、页面资源加载模块、数据提取模块、数据存储模块、异步多任务管理模块和日志及进度管理模块;
所述配置加载模块,用于根据所选运行方式确定目标网站,加载创建的目标网站的配置文件,并进行配置校验,校验成功后基于各配置项初始化并启动***其他模块运行;
所述页面资源加载模块,用于根据输入的目标网站首页地址、分类导航链接或文章链接,基于配置的网站类型选择对应页面加载功能,加载对应页面资源;
所述数据提取模块,用于识别配置的分类导航链接、文章链接、文章内容、文章摘要、文章标题、文章日期或文章作者的数据提取表达式类型,根据识别结果选择css数据提取功能或xpath数据提取功能,提取各页面资源的对应数据信息;
所述数据存储模块,用于对各文章链接对应页面资源提取的数据信息进行智能校验,智能校验成功后,基于配置的数据存储方式、本地存储路径或数据库各项信息配置对应存入数据库或本地文件中,并进行文章重复性校验;
所述日志及进度管理模块,基于配置的日志及进度的存储目录配置,将页面资源请求失败的错误提示信息、智能校验失败或重复的文章链接,记录到本地日志文件中,同时在本地进度记录文件中实时记录目标网站的爬取进度,在下次运行或者异常退出重新运行时可继续之前的爬取进度;
所述异步多任务管理模块,基于Node.js异步处理能力调度和协同其他模块完成多网站并发爬取或多分类导航爬取。
进一步地,所述数据提取模块在提取文章链接对应页面资源的数据信息后,运行自定义处理代码段。
本发明的有益效果为:
1、本发明提出了一种用于新闻博客类网站的通用低代码爬虫方法及***,只需人工添加待爬取网站的各项配置,即可完成一个满足基本需求的新闻爬取,适用于大部分的新闻博客类网站,相比于常规的编写代码开发,大幅度提升新闻博客类网站的爬虫程序开发和维护效率;
2、本发明具有日志及进度管理功能,若***出现故障或网络中断等外部因素,将导致爬取过程中断,通过在本地日志文件或本地进度记录文件中查找上次中断的记录,可续接爬取进度继续运行,提升爬取效率的同时保证数据的完整性,同时开发者查看异常网页不会影响爬取进度;
3、本发明具有异步多任务管理功能,实现多网站并发爬取或多分类导航爬取,大大提升对海量爬取需求的爬取效率;
4、优选地,根据实际需求在爬虫代码文件目录中的指定代码文件中添加自定义处理代码段,可以在满足基本需求的通用低代码爬虫***的基础上灵活便捷的扩展爬取功能,更具有通用性。
附图说明
图1为本发明实施例1提出的用于新闻博客类网站的通用低代码爬虫方法的流程示意图;
图2为本发明实施例1提出的用于新闻博客类网站的通用低代码爬虫***的架构图;
图3为本发明实施例1提出的用于新闻博客类网站的通用低代码爬虫***中页面资源加载模块的结构图;
图4为本发明实施例1提出的用于新闻博客类网站的通用低代码爬虫***中数据提取模块的结构图;
图5为本发明实施例1提出的用于新闻博客类网站的通用低代码爬虫***中数据存储模块的结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
本实施例提出了一种基于Node.js开发的用于新闻博客类网站的通用低代码爬虫***,架构如图2所示,包括配置加载模块、页面资源加载模块、数据提取模块、数据存储模块、异步多任务管理模块和日志及进度管理模块;其中,
如图3所示,所述页面资源加载模块包括URL智能拼接处理模块、基于puppeteer的动态页面加载模块和基于axios的静态页面加载模块;
如图4所示,所述数据提取模块包括选择器类型识别模块、数据对象生成模块、基于css的数据提取模块和基于xpath的数据提取模块;
如图5所示,所述数据存储模块包括数据对象校验模块、json文件存储模块、csv文件存储模块、MySQL文件存储模块和MongoDB文件存储模块。
基于上述通用低代码爬虫***的爬虫方法的流程图如图1所示,包括以下步骤:
步骤1:对所有待爬取网站,手动创建各待爬取网站的json配置文件并填入各配置项,所述配置文件中包括基础配置、存储配置、各数据项选择器配置和其他配置;其中,基础配置包括网站的名称、类型、编码格式、首页地址等信息配置,所述网站类型包括动态网站和静态网站;存储配置包括数据存储方式、本地存储路径、数据库各项信息配置和日志及进度的存储目录配置;各数据项选择器配置包括分类导航链接、文章链接、文章内容、文章摘要、文章标题、文章日期和文章作者的数据提取表达式类型,具体有css数据提取功能和xpath数据提取功能两种,css数据提取功能的书写简洁且速度更快,但是功能不够强大,xpath数据提取功能更强大,可用于复杂内容定位,但是写法较复杂,性能稍慢;其他配置包括网络请求频率,单次运行最大数据爬取量,多分类导航并发爬取配置项,纯文本时间格式转化配置,和文章列表页面的分页参数配置、翻页操作配置及起始页码,其中,多分类导航并发爬取配置项包括是否开启多分类导航并发爬取和分类导航的最大任务并发数量;
配置文件中各配置项的具体描述参考下方表格:
此外,根据实际需求,采用JavaScript语言,按照***命名规范在爬虫代码文件目录中的指定代码文件中添加自定义处理代码段,具体为***自定义处理函数,函数的形参包括当前网页html文本和当前已提取的数据对象,开发者可在此处添加图片下载、数据项过滤筛选、数据格式化等自定义功能,并在函数的末尾将自定义处理后的数据对象返回。
步骤2:开始运行,选择单网站爬取、多网站串行爬取或多网站并发爬取的运行方式,并确定待爬取网站中的目标网站,配置加载模块加载创建的目标网站的json配置文件,检验json配置文件中各配置项是否完整且符合要求,若不符合要求则提示错误信息;校验成功后基于各配置项初始化并启动***其他模块运行,完成数据库连接或本地文件读写流创建、读取爬取进度等I/O初始化操作;
其中,当所选运行方式为单网站爬取时,通过命令行交互确定目标网站;当所选运行方式为多网站串行爬取时,将所有待爬取网站依次作为目标网站;当所选运行方式为多网站并发爬取时,根据***资源负载情况自动确定同时进行的任务分支数量,在异步多任务管理模块的调度和协同下各任务分支同时独立执行目标网站爬取,各任务分支的上一个目标网站爬取完成后进行下一个目标网站爬取,直至所有待爬取网站均作为目标网站;
步骤3:请求并获取目标网站首页,提取导航栏的所有分类导航链接及对应类别名,具体过程如下:
步骤3.1:将配置文件中填入的目标网站首页地址作为页面资源加载模块的输入,根据填入的网站类型,选择基于puppeteer的动态页面加载模块或基于axios的静态页面加载模块向目标网站发送请求,验证请求反馈的状态码和网页文本,若状态码为200,则成功获取html目标网站首页;若请求发送失败或状态码为非200,则重复发送请求最多3次,若仍请求失败则终止目标网站的爬取,同时输出相应的错误提示信息,通过日志及进度管理模块记录到本地日志文件中;
步骤3.2:将html目标网站首页转换为包含目标网站首页各项元素节点的目标网站结构化对象;
步骤3.3:数据提取模块中的选择器类型识别模块通过正则匹配方法识别配置的分类导航链接的数据提取表达式类型,根据选择器类型识别结果选择基于css的数据提取模块或基于xpath的数据提取模块,在目标网站结构化对象中提取导航栏的所有分类导航链接及对应类别名。
步骤4:对各分类导航链接,请求并获取对应分类导航链接的文章列表页面,提取所有文章链接,并加入待爬取列表,具体过程如下:
步骤4.1:对各分类导航链接,将分类导航链接作为页面资源加载模块的输入,根据填入的网站类型,选择基于puppeteer的动态页面加载模块或基于axios的静态页面加载模块向分类导航链接指向的文章列表页面发送请求,验证请求反馈的状态码和网页文本,若状态码为200,则成功获取文章列表页面;若请求发送失败或状态码为非200,则重复发送请求最多3次,若仍请求失败则结束分类导航链接指向的文章列表页面的爬取,同时输出相应的错误提示信息,通过日志及进度管理模块记录到本地日志文件中;
步骤4.2:将文章列表页面转换为包含文章列表页面各项元素节点的文章列表页面结构化对象;
步骤4.3:选择器类型识别模块通过正则匹配方法识别配置的文章链接的数据提取表达式类型,根据选择器类型识别结果选择基于css的数据提取模块或基于xpath的数据提取模块,在文章列表页面结构化对象中提取所有URL文章链接;再利用URL智能拼接处理模块判断所提取的URL文章链接是否完整,若不完整,则进行智能拼接补全处理,将补全后的URL文章链接加入待爬取列表。
步骤5:请求并获取待爬取列表中URL文章链接对应的文章网页资源,提取文章网页资源中的各项信息,作为爬取数据,具体过程如下:
步骤5.1:将URL文章链接作为页面资源加载模块的输入,根据填入的网站类型,选择基于puppeteer的动态页面加载模块或基于axios的静态页面加载模块向文章链接指向的文章网页资源发送请求,验证请求反馈的状态码和网页文本,若状态码为200,则成功获取文章网页资源;若请求发送失败或状态码为非200,则重复发送请求最多3次,若仍请求失败则跳过当前文章链接,并继续进行待爬取列表中下一文章链接指向的文章网页资源的爬取,同时输出相应的错误提示信息,通过日志及进度管理模块记录到本地日志文件中;
步骤5.2:将文章网页资源转换为包含文章网页资源各项元素节点的文章网页资源结构化对象;
步骤5.3:选择器类型识别模块通过正则匹配方法识别配置的文章内容、文章摘要、文章标题、文章日期和文章作者的数据提取表达式类型,根据选择器类型识别结果选择基于css的数据提取模块或基于xpath的数据提取模块,在文章网页资源中提取对应的文章内容、文章摘要、文章标题、文章日期和文章作者,通过数据对象生成模块整体融合成待存储的新闻数据对象,作为爬取数据;
在整体融合过程中,若网页资源存在信息缺失,则通过数据对象生成模块进行补空值处理,当文章日期缺失时,补空为获取当前文章网页资源的时间;对于文章日期的字段根据配置文件中的日期填充格式进行格式化处理;
若在步骤1中添加了自定义处理代码段,所选数据提取模块还需执行自定义处理代码段;所述自定义处理代码段执行的功能包括额外信息提取、格式转换、二次处理或自定义过滤筛选等。
步骤6:对爬取数据进行智能校验,过滤异常数据后存入数据库或本地文件,具体过程如下:
步骤6.1:数据存储模块中的数据对象校验模块对爬取数据的各字段进行智能校验,若存在字段缺失或异常,则判断为无效数据不予存入,输出无效信息提示,并将对应的文章链接通过日志及进度管理模块记录到本地日志文件中;
步骤6.2:数据对象校验模块还将智能校验成功的爬取数据中的文章内容和文章标题作为判重条件,判断数据库或本地文件中是否已存有相同数据,若出现重复,则将文章链接通过日志及进度管理模块记录到本地日志文件中;否则,将爬取数据存入json文件存储模块、csv文件存储模块、MySQL文件存储模块或MongoDB文件存储模块中,其中json文件存储模块和csv文件存储模块用于本地文件存储,MySQL文件存储模块和MongoDB文件存储模块用于数据库存储。
步骤7:重复步骤5和步骤6,直至完成待爬取列表中所有文章链接的爬取,至此完成所述目标网站的爬取。
进一步地,若目标网站启用多分类导航并发爬取配置项,则步骤4在异步多任务管理模块的调度和协同下,同时进行多个分类导航链接的爬取。
进一步地,所述通用低代码爬虫***通过日志及进度管理模块在本地进度记录文件中实时记录目标网站的爬取进度,在下次运行或者异常退出重新运行时读取进度,继续之前的爬取进度。
Claims (10)
1.一种用于新闻博客类网站的通用低代码爬虫方法,其特征在于,包括以下步骤:
步骤1:对所有待爬取网站,创建各待爬取网站的配置文件并填入各配置项;
步骤2:开始运行,选择运行方式并确定待爬取网站中的目标网站,加载目标网站的各配置项并进行配置校验;
步骤3:请求并获取目标网站首页,提取导航栏的所有分类导航链接及对应类别名;
步骤4:对各分类导航链接,请求并获取对应分类导航链接的文章列表页面,提取所有文章链接,并加入待爬取列表;
步骤5:请求并获取待爬取列表中文章链接对应的网页资源,根据配置文件提取网页资源中的各项信息,作为爬取数据;
步骤6:对爬取数据进行智能校验,过滤异常数据后存入数据库或本地文件;
步骤7:重复步骤5和步骤6,直至完成待爬取列表中所有文章链接的爬取,至此完成所述目标网站的爬取。
2.根据权利要求1所述用于新闻博客类网站的通用低代码爬虫方法,其特征在于,步骤1创建的配置文件中包括基础配置、存储配置、各数据项选择器配置和其他配置;其中,基础配置包括网站的名称、类型、编码格式和首页地址,所述网站的类型包括动态网站和静态网站;存储配置包括数据存储方式,本地存储路径,数据库各项信息配置,和日志及进度的存储目录配置;各数据项选择器配置包括分类导航链接、文章链接、文章内容、文章摘要、文章标题、文章日期和文章作者的数据提取表达式类型,有css数据提取功能和xpath数据提取功能两种;其他配置包括网络请求频率,单次运行最大数据爬取量,多分类导航并发爬取配置项,和文章列表页面的分页参数配置、翻页操作配置及起始页码。
3.根据权利要求1所述用于新闻博客类网站的通用低代码爬虫方法,其特征在于,步骤2中的运行方式包括单网站爬取、多网站串行爬取和多网站并发爬取;当所选运行方式为单网站爬取时,步骤2通过命令行交互确定目标网站;当所选运行方式为多网站串行爬取时,步骤2将所有待爬取网站依次作为目标网站;当所选运行方式为多网站并发爬取时,步骤2根据***资源负载情况自动确定同时进行的任务分支数量,各任务分支的上一个目标网站爬取完成后进行下一个目标网站爬取,直至所有待爬取网站均作为目标网站。
4.根据权利要求2所述用于新闻博客类网站的通用低代码爬虫方法,其特征在于,步骤3的具体过程为:
步骤3.1:根据目标网站首页地址和网站类型,向目标网站发送请求,验证请求反馈的状态码和网页文本,若状态码为200,则成功获取目标网站首页;若请求发送失败或状态码为非200,则重复发送请求最多3次,若仍请求失败则终止目标网站的爬取,同时输出相应的错误提示信息并记录到日志中;
步骤3.2:将目标网站首页转换为包含目标网站首页各项元素节点的目标网站结构化对象;
步骤3.3:基于分类导航链接的数据提取表达式类型,在目标网站结构化对象中提取导航栏的所有分类导航链接及对应类别名。
5.根据权利要求2所述用于新闻博客类网站的通用低代码爬虫方法,其特征在于,步骤4的具体过程为:
步骤4.1:对各分类导航链接,根据分类导航链接和网站类型,向分类导航链接指向的文章列表页面发送请求,验证请求反馈的状态码和网页文本,若状态码为200,则成功获取文章列表页面;若请求发送失败或状态码为非200,则重复发送请求最多3次,若仍请求失败则结束分类导航链接指向的文章列表页面的爬取,同时输出相应的错误提示信息并记录到日志中;
步骤4.2:将文章列表页面转换为包含文章列表页面各项元素节点的文章列表页面结构化对象;
步骤4.3:基于文章链接的数据提取表达式类型,在文章列表页面结构化对象中提取所有文章链接,判断所提取的文章链接是否完整,若不完整,则进行智能拼接补全处理,将补全后的文章链接加入待爬取列表。
6.根据权利要求1所述用于新闻博客类网站的通用低代码爬虫方法,其特征在于,步骤1创建的配置文件中还包括多分类导航并发爬取配置项,若目标网站启用多分类导航并发爬取配置项,则步骤4同时进行多个分类导航链接的爬取。
7.根据权利要求2所述用于新闻博客类网站的通用低代码爬虫方法,其特征在于,步骤5的具体过程为:
步骤5.1:根据文章链接和网站类型,向文章链接指向的文章网页资源发送请求,验证请求反馈的状态码和网页文本,若状态码为200,则成功获取文章网页资源;若请求发送失败或状态码为非200,则重复发送请求最多3次,若仍请求失败则跳过当前文章链接,进行待爬取列表中下一文章链接指向的文章网页资源的爬取,同时输出相应的错误提示信息并记录到日志中;
步骤5.2:将文章网页资源转换为包含文章网页资源各项元素节点的文章网页资源结构化对象;
步骤5.3:基于文章内容、文章摘要、文章标题、文章日期和文章作者的数据提取表达式类型,在文章网页资源结构化对象中提取对应的文章内容、文章摘要、文章标题、文章日期和文章作者,作为爬取数据;若网页资源存在信息缺失,则进行补空值处理,当文章日期缺失时,补空为获取当前文章网页资源的时间。
8.根据权利要求2所述用于新闻博客类网站的通用低代码爬虫方法,其特征在于,步骤6的具体过程为:
步骤6.1:对爬取数据的各字段进行智能校验,若存在字段缺失或异常,则判断为无效数据不予存入,输出无效信息提示并将对应的文章链接记录到日志中;
步骤6.2:将智能校验成功的爬取数据中的文章内容和文章标题作为判重条件,判断数据库或本地文件中是否已存有相同数据,若出现重复,则将文章链接记录到日志中;否则,将爬取数据存入数据库或本地文件。
9.根据权利要求1所述用于新闻博客类网站的通用低代码爬虫方法,其特征在于,在步骤1中根据实际需求,在爬虫代码文件目录中的指定代码文件中添加自定义处理代码段,并在步骤5提取爬取数据后,执行自定义处理代码段;所述自定义处理代码段执行的功能包括额外信息提取、格式转换、二次处理或自定义过滤筛选。
10.一种用于新闻博客类网站的通用低代码爬虫***,其特征在于,包括配置加载模块、页面资源加载模块、数据提取模块、数据存储模块、异步多任务管理模块和日志及进度管理模块;
所述配置加载模块,用于根据所选运行方式确定目标网站,加载创建的目标网站的配置文件,并进行配置校验,校验成功后基于各配置项初始化并启动***其他模块运行;
所述页面资源加载模块,用于根据输入的目标网站首页地址、分类导航链接或文章链接,基于配置的网站类型选择对应页面加载功能,加载对应页面资源;
所述数据提取模块,用于识别配置的分类导航链接、文章链接、文章内容、文章摘要、文章标题、文章日期或文章作者的数据提取表达式类型,根据识别结果选择css数据提取功能或xpath数据提取功能,提取各页面资源的对应数据信息;
所述数据存储模块,用于对各文章链接对应页面资源提取的数据信息进行智能校验,智能校验成功后,基于配置的数据存储方式、本地存储路径或数据库各项信息配置对应存入数据库或本地文件中,并进行文章重复性校验;
所述日志及进度管理模块,基于配置的日志及进度的存储目录配置,将页面资源请求失败的错误提示信息、智能校验失败或重复的文章链接,记录到本地日志文件中,同时在本地进度记录文件中实时记录目标网站的爬取进度,在下次运行或者异常退出重新运行时继续之前的爬取进度;
所述异步多任务管理模块,基于Node.js异步处理能力调度和协同其他模块完成多网站并发爬取或多分类导航爬取。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210001246.5A CN114491206A (zh) | 2022-01-04 | 2022-01-04 | 一种用于新闻博客类网站的通用低代码爬虫方法及*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210001246.5A CN114491206A (zh) | 2022-01-04 | 2022-01-04 | 一种用于新闻博客类网站的通用低代码爬虫方法及*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114491206A true CN114491206A (zh) | 2022-05-13 |
Family
ID=81509242
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210001246.5A Pending CN114491206A (zh) | 2022-01-04 | 2022-01-04 | 一种用于新闻博客类网站的通用低代码爬虫方法及*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114491206A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816373A (zh) * | 2022-06-30 | 2022-07-29 | 金现代信息产业股份有限公司 | 用于低代码开发平台的即时错误提示方法及*** |
CN114860673A (zh) * | 2022-07-06 | 2022-08-05 | 南京聚铭网络科技有限公司 | 基于动静结合的日志特征识别方法及装置 |
CN117573959A (zh) * | 2023-10-17 | 2024-02-20 | 北京国科众安科技有限公司 | 一种基于网页xpath获取新闻正文的通用方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109829096A (zh) * | 2019-03-15 | 2019-05-31 | 北京金山数字娱乐科技有限公司 | 一种数据采集方法、装置、电子设备及存储介质 |
CN109902220A (zh) * | 2019-02-27 | 2019-06-18 | 腾讯科技(深圳)有限公司 | 网页信息获取方法、装置和计算机可读存储介质 |
CN110597981A (zh) * | 2019-09-16 | 2019-12-20 | 西华大学 | 一种采用多策略自动生成摘要的网络新闻概要*** |
CN111723265A (zh) * | 2020-07-01 | 2020-09-29 | 杭州叙简科技股份有限公司 | 一种可扩展的新闻网站通用爬虫方法及*** |
CN113626674A (zh) * | 2021-08-03 | 2021-11-09 | 杭州隆埠科技有限公司 | 新闻采集*** |
-
2022
- 2022-01-04 CN CN202210001246.5A patent/CN114491206A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109902220A (zh) * | 2019-02-27 | 2019-06-18 | 腾讯科技(深圳)有限公司 | 网页信息获取方法、装置和计算机可读存储介质 |
CN109829096A (zh) * | 2019-03-15 | 2019-05-31 | 北京金山数字娱乐科技有限公司 | 一种数据采集方法、装置、电子设备及存储介质 |
CN110597981A (zh) * | 2019-09-16 | 2019-12-20 | 西华大学 | 一种采用多策略自动生成摘要的网络新闻概要*** |
CN111723265A (zh) * | 2020-07-01 | 2020-09-29 | 杭州叙简科技股份有限公司 | 一种可扩展的新闻网站通用爬虫方法及*** |
CN113626674A (zh) * | 2021-08-03 | 2021-11-09 | 杭州隆埠科技有限公司 | 新闻采集*** |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114816373A (zh) * | 2022-06-30 | 2022-07-29 | 金现代信息产业股份有限公司 | 用于低代码开发平台的即时错误提示方法及*** |
CN114860673A (zh) * | 2022-07-06 | 2022-08-05 | 南京聚铭网络科技有限公司 | 基于动静结合的日志特征识别方法及装置 |
CN117573959A (zh) * | 2023-10-17 | 2024-02-20 | 北京国科众安科技有限公司 | 一种基于网页xpath获取新闻正文的通用方法 |
CN117573959B (zh) * | 2023-10-17 | 2024-04-05 | 北京国科众安科技有限公司 | 一种基于网页xpath获取新闻正文的通用方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114491206A (zh) | 一种用于新闻博客类网站的通用低代码爬虫方法及*** | |
CN111832236B (zh) | 一种芯片回归测试方法、***、电子设备及存储介质 | |
CN106126648B (zh) | 一种基于重做日志的分布式商品信息爬虫方法 | |
CN105243159A (zh) | 一种基于可视化脚本编辑器的分布式网络爬虫*** | |
US20140059423A1 (en) | Display of Hypertext Documents Grouped According to Their Affinity | |
CN114077534B (zh) | 测试用例生成方法、装置和计算机可读存储介质 | |
Casamayor et al. | Mining textual requirements to assist architectural software design: a state of the art review | |
CN111813443B (zh) | 一种用JavaFX进行代码样例自动填充的方法和工具 | |
CN113918460A (zh) | 页面测试方法、装置、设备和介质 | |
CN113901169A (zh) | 信息处理方法、装置、电子设备及存储介质 | |
Jahanbin et al. | Intelligent run-time partitioning of low-code system models | |
CN116088846A (zh) | 一种持续集成代码格式的处理方法、相关装置及设备 | |
CN116010452A (zh) | 基于流式计算引擎的工业数据处理***和方法、介质 | |
CN112328246A (zh) | 页面组件生成方法、装置、计算机设备及存储介质 | |
CN110297960A (zh) | 一种基于配置的分布式公文数据采集*** | |
CN116450246A (zh) | 一种基于状态机的事件流转可配置方法 | |
Bowie | Applications of graph theory in computer systems | |
CN114596070A (zh) | 一种基于知识图谱的产品优化设计平台构建方法 | |
CN113094122A (zh) | 数据处理脚本的执行方法和装置 | |
CN112422707A (zh) | 域名数据挖掘方法、装置及Redis服务器 | |
Bernardi et al. | The re-uwa approach to recover user centered conceptual models from web applications | |
Zhu et al. | A supporting tool for syntactic analysis of SOFL formal specifications and automatic generation of functional scenarios | |
Di Lucca et al. | Web pages classification using concept analysis | |
JP3452960B2 (ja) | オブジェクト型モデル作成システム、および故障診断システム作成システム | |
Nagarajan et al. | VISTA--a visual interface for software reuse in TROMLAB environment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20220513 |