1、SOFTWARE软 件2023第 44 卷 第 1 期2023 年Vol.44,No.1作者简介:李强(1973),男,研究生,讲师,研究方向:计算机应用、职业教育。基于 Python 的新闻聚合系统网络爬虫研究李强(应天职业技术学院信息工程学院,江苏南京 211100)摘要:本文分析了基于 Python 的新闻聚合系统网络爬虫,指的是根据 Python 的网络爬虫构建新闻聚合系统,利用爬虫获取新闻聚合系统的新闻数据,不同网站的页面布局是不同的,因此需要创建开源爬虫,可以在不同页面布局中获取数据。在网络爬虫开发过程中需要利用 Python 语言,而网络爬虫 Web 提取工具为 Beautifu
2、lSoup,Web 应用程序框架为 Laravel,选用的后端语言为 PHP。网络爬虫可以根据用户配置文件提取不同页面布局的数据,并且可以向数据库系统中导入提取的数据。关键词:Python;新闻聚合系统;网络爬虫中图分类号:TP391.3 文献标识码:A DOI:10.3969/j.issn.1003-6970.2023.01.046本文著录格式:李强.基于Python的新闻聚合系统网络爬虫研究J.软件,2023,44(01):168-170 Research on Web Crawler of News Aggregation System Based on PythonLI Qiang(D
3、epartment of Information Engineering,Yingtian Vocational&Technical College,Nanjing Jiangsu 211100)【Abstract】:This paper analyzes the news aggregation system web crawler based on Python,which refers to building a news aggregation system based on Python web crawlers,and using the crawler to obtain the
4、 news data of the news aggregation system.The page layout of different websites is different,so we need to create an open source crawler to obtain data in different page layouts.Python language needs to be used in the development of web crawlers,while the Web extraction tool of web crawlers is Beaut
5、ifulSoup,the Web application framework is Larravel,and the selected back-end language is PHP.The web crawler can extract the data of different page layouts according to the user profile,and can import the extracted data to the database system.【Key words】:Python;news aggregation system;web crawler设计研
6、究与应用0 引言在社会发展过程中,人们每天都要阅读新闻,从而掌握最新信息,而随着科学技术不断发展,也逐渐提高了新闻传播速度。利用互联网技术可以更加便利的获取各种新闻信息,而网络中包含过多的冗余新闻信息,用户在阅读新闻的时候需要频繁切换不同的站点,从而增加了新闻获取难度,同时耗费了较多的时间成本。因此需要建立新闻聚合系统,利用特定格式汇总多个来源的新闻。新闻聚合系统主要是利用网络爬虫和网络爬虫调度器以及 Socket 服务器等获取新闻数据。1 概述网络爬虫技术1.1 网络爬虫定义在网络时代,互联网中的网络爬虫发挥着重要的作用。针对海量的互联网数据,人们注重利用互联网高效的获取数据,并利用爬虫技术
7、可以解决上述问题。网络爬虫根据预先设定的规则为自动化的获取网络信息。网络爬虫是网页追逐者,人们原来是利用手工方式获取互联网信息,信息搜集成本比较高,而且整体工作效率比较低,而利用网络爬虫采集和整理数据信息的时候,可以根据预先设定的规则在互联网中自动化爬取。在数据时代信息发挥着重要的作用,因此突出了信息采集工作的重要性1。1.2 网络爬虫的原理根据系统结构和实现技术可以划分网络爬虫为以下类型:通用网络爬虫、聚焦网络爬虫、增量式网络爬虫以及深层网络爬虫。当前百度和 Yahoo 以及 Google 等都属于复杂的网络爬虫,而且属于通用型网络爬虫。通用型网络爬虫以初始网页的链接地址,提前网页中的 UR
8、L,并且降低 URL 作为初始种子。在网页抓取过程中不断抽取新的 URL,将重复的 URL 过滤出去,169李强:基于 Python 的新闻聚合系统网络爬虫研究然后在待抓取的过程中加入剩下的 URL,通过重复这一过程,最终满足特点条件:URL 队列为空,或者爬取指定数量的网页。网络爬虫工作流程如下:(1)选择种子 URL;(2)抓取网页;(3)提取新的 URL,并放入到抓取的 URL队列中;(4)判断是否满足条件,如果不满足条件需要重新执行第二步和第三步,直至满足相关条件,从而结束所有的工作。1.3 常用网络爬虫搜索策略爬虫编写之前需要深入分析爬虫搜索策略,有利于提高信息抓取的效率。常用的网络
9、爬虫策略包括宽度优先搜索策略和深度优先搜索策略。宽度优先搜索策略指的是广度优先搜索策略。宽度优先搜索策略以链接为基础,实现网页横向拓展,全面抓取网页中所有的网页。利用这种方法可以在最大程度上扩大网页覆盖面,但是这种方法网页抓取量比较大,其中包含无关网页,如果去除这部分网页将会增加整体工作量,同时降低算法的执行效率。深度优先策略指的是爬虫利用纵向深入方式,以起始页面为基础,逐渐扩大网页中没有被访问的网页,深度优先策略是一个递归过程。在执行爬虫程序的过程中需要耗费较多的空间和时间,同时占用较多的计算机资源,而且深度优先策略很容易引发爬虫陷入问题,从而引发死机问题。因此深度优先策略缺乏完备性和优化性
10、,因此通常情况下是利用宽度优先策略。1.4 网络爬虫种类根据系统组成结构和技术可以划分网络爬虫为通用网络爬虫和聚集网络爬虫以及增量式网络爬虫等。而网络爬虫面向整个互联网资源,目标数据的范围十分广泛,可以在大型搜索引擎中利用。在网络爬虫工作中,首先抓取网页,其次利用搜索引擎在通用爬虫的地址队列中加入准备爬取的地址,随后再爬取网页上的内容,在爬取之后,可以存储爬下来的数据,并且在本地保存,在这一过程中可以去除重复内容。此外还要针对爬取的数据落实预处理,提取重要的文字,同时需要落实分词和噪音消除等操作。聚焦网络爬虫是根据预定主题爬取网页,对比通用爬虫,爬取目标是有关主题的页面,可以提取海量数据库中的
11、重要信息,因此可以节省硬件和网络资源,同时可以满足特定人群的信息需求。增量式网路爬虫主要是通过爬虫程序全面监测网站数据,有利于及时爬取更新的数据,还可以继续爬取没有爬完的数据,也可以爬取网站没有更新的数据2。2 概述 Python 网络爬虫的架构Python 爬虫架构主要包括爬虫调度器和 URL 管理器以及 HTML 下载器等部分。爬虫调度器负责统筹其他部分的协调工作。URL 管理器负责链接 URL,同时负责提供获取新 URL 链接的接口。HTML 下载器用于下载网页,如果下载的网页存在乱码问题,需要注意网页编码。HTML 解析器获取下载的 HTML 网页,可以解析新的 URL 链接,解析网页
12、字符符串,并且在数据存储器存储解析的有效数据。3 新闻聚合系统的工具3.1 网络爬虫网络爬虫是一种机器人,可以根据特定规则自动化获取网络信息。在实际工作中主要是利用以下工具获取信息:(1)Scrapy:Scrapy 是一种简单的信息抓取框架,不仅可以抓取 Web 站点,而且可以进一步提取结构化的数据。Scrapy 用途十分广泛,可以在数据挖掘和监测过程中利用;(2)BeautifulSoup 是一种 HTML 解析器,可以提取网页内容,但是不能将 BeautifulSoup 作为单独网络爬虫工具;(3)Link Grabber:Link Grabber 是一种利用 Python 编写的库,可以
13、提取网页中的定位器,也可以提取锚标记内的文本。3.2 网络爬虫的比较在网络爬虫性能衡量过程中主要是综合爬行能力和处理能力两个方面。Scrapy 是 Python 的爬行框架,其处理能力属于轻量级,而且需要另一个库,例如需要利用 BeautifulSoup 解析复杂结构的 HTML 页面。BeautifulSoup 需要另一个库,在实际工作中需要进一步开发。BeautifulSoup 的处理能力比较强,可以解析复杂格式的 HTML 页面,此外 BeautifulSoup 可以利用附加库快速解析 HTML。Link Grabber 的基础为BeautifulSoup,具有很强的处理能力3。3.3
14、比较 Web 应用程序框架在 Web 应用程序框架比较过程中主要是参考速度和性能两个方面。例如 CodeIgniter 速度较快,在客户端请求处理过程中,整体开销比较小。整体框架比较简单,可以发挥出加密和数据库查询生成器以及路由等基本功能,但是无法发挥出更高级的功能。Laravel 的速度属于中速,接收客户请求的时候将会产生较多的处理开销。Laravel 的性能优良,其中包含较多的内置特性,例如包括用户身份验证库和高级路由以及模板引擎等。此外还包括名称空间和类自动加载。3.4 解决方案通过上文的比较,利用 Laravel 框架作为 Web 应用170软 件第 44 卷 第 1 期SOFTWAR
15、E框架,这是因为 Laravel 框架具有现代化的体系结构,同时具备 PHP7 特性,而且具备有关新闻聚合系统的发展功能。利用 Laravel 框架可以可以简单的创建 API,这是因为 Laravel 框架就具备高级的路由,同时可以发挥出单元测试功能,同时将 BeautifulSoup 作为网络爬虫框架。因为 BeautifulSoup 框架比较简单,并且具有良好的性能,可以在解析格式复杂的 HTML 页面中利用4。4 设计解决方案4.1 解决方案的架构(1)Laravel 框架是一种 PHP 框架,可以托管应用程序 CMS,可以为移动客户端提供 API,Laravel 框架在 MySQL 数
16、据库中存储应用程序数据,还可以通过Redis 服务器向 Socket 服务器中发送通知数据,从而向用户发送通知。(2)Laravel REST API 是 Laravel 框架重要的组建,通常在移动客户端和框架接口之间利用 REST API。(3)Python 新闻爬虫可以获取 Web 页面数据,同时在 MySQL 数据库中存储提取的内容。在新闻分析过程中,爬虫将 HTTP 请求数据发送到 AI,结合分析结果在数据库中存储有价值的信息,同时可以丢弃无价值的信息5。(4)MySQL数据库负责存储数据,这是因为MySQL数据库支持本地系统,Python 新闻爬虫还可以和 MySQL系统之间通信,无需利用 Laravel 框架。(5)Redis服务器是一种数据结构系统,在Laravel框架和套接字服务器中,利用Redis作为消息代理,还可以利用Redis作为缓存取用程序,因此减少数据库查询次数。(6)Socket 服务可以向客户端提供 WebSocket 服务,可以在 Laravel 框架中向客户端中广播数据,实现WebSocket 服务的过程中利用 Socket.IO6。4.2 开发方法利