SCI论文(www.lunwensci.com)
摘 要:本文分析了基于 Python 的新闻聚合系统网络爬虫,指的是根据 Python 的网络爬虫构建新闻聚合系统,利用爬 虫获取新闻聚合系统的新闻数据,不同网站的页面布局是不同的,因此需要创建开源爬虫,可以在不同页面布局中获取数据。 在网络爬虫开发过程中需要利用 Python 语言,而网络爬虫 Web 提取工具为 BeautifulSoup, Web 应用程序框架为 Laravel, 选用的后端语言为 PHP。网络爬虫可以根据用户配置文件提取不同页面布局的数据,并且可以向数据库系统中导入提取的数据。
关键词:Python,新闻聚合系统,网络爬虫
Research on Web Crawler of News Aggregation System Based on Python
LI Qiang
(Department 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 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 BeautifulSoup, 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
0 引言
在社会发展过程中,人们每天都要阅读新闻, 从而 掌握最新信息,而随着科学技术不断发展,也逐渐提高 了新闻传播速度。利用互联网技术可以更加便利的获取 各种新闻信息,而网络中包含过多的冗余新闻信息,用 户在阅读新闻的时候需要频繁切换不同的站点,从而增 加了新闻获取难度,同时耗费了较多的时间成本。因此 需要建立新闻聚合系统,利用特定格式汇总多个来源的 新闻。新闻聚合系统主要是利用网络爬虫和网络爬虫调 度器以及 Socket 服务器等获取新闻数据。
1 概述网络爬虫技术
1.1 网络爬虫定义
在网络时代,互联网中的网络爬虫发挥着重要的作 用。针对海量的互联网数据,人们注重利用互联网高效 的获取数据,并利用爬虫技术可以解决上述问题。网络爬虫根据预先设定的规则为自动化的获取网络信息。网 络爬虫是网页追逐者,人们原来是利用手工方式获取互 联网信息,信息搜集成本比较高,而且整体工作效率比 较低,而利用网络爬虫采集和整理数据信息的时候,可 以根据预先设定的规则在互联网中自动化爬取。在数据 时代信息发挥着重要的作用,因此突出了信息采集工作 的重要性 [1]。
1.2 网络爬虫的原理
根据系统结构和实现技术可以划分网络爬虫为以下 类型 :通用网络爬虫、聚焦网络爬虫、增量式网络爬虫 以及深层网络爬虫。当前百度和 Yahoo 以及 Google 等 都属于复杂的网络爬虫,而且属于通用型网络爬虫。
通用型网络爬虫以初始网页的链接地址,提前网页 中的 URL,并且降低 URL 作为初始种子。在网页抓取 过程中不断抽取新的 URL,将重复的 URL 过滤出去,然后在待抓取的过程中加入剩下的 URL,通过重复这 一过程,最终满足特点条件 :URL 队列为空,或者爬 取指定数量的网页。
网络爬虫工作流程如下 :(1)选择种子 URL ;(2) 抓取网页 ;(3)提取新的 URL,并放入到抓取的 URL 队列中 ;(4)判断是否满足条件,如果不满足条件需要 重新执行第二步和第三步,直至满足相关条件,从而结 束所有的工作。
1.3 常用网络爬虫搜索策略
爬虫编写之前需要深入分析爬虫搜索策略,有利于 提高信息抓取的效率。常用的网络爬虫策略包括宽度优 先搜索策略和深度优先搜索策略。
宽度优先搜索策略指的是广度优先搜索策略。宽度 优先搜索策略以链接为基础,实现网页横向拓展,全面 抓取网页中所有的网页。利用这种方法可以在最大程度 上扩大网页覆盖面,但是这种方法网页抓取量比较大, 其 中包含无关网页,如果去除这部分网页将会增加整体工 作量,同时降低算法的执行效率。
深度优先策略指的是爬虫利用纵向深入方式,以起 始页面为基础,逐渐扩大网页中没有被访问的网页,深 度优先策略是一个递归过程。在执行爬虫程序的过程中 需要耗费较多的空间和时间,同时占用较多的计算机资 源,而且深度优先策略很容易引发爬虫陷入问题,从 而引发死机问题。因此深度优先策略缺乏完备性和优化 性,因此通常情况下是利用宽度优先策略。
1.4 网络爬虫种类
根据系统组成结构和技术可以划分网络爬虫为通用 网络爬虫和聚集网络爬虫以及增量式网络爬虫等。而网 络爬虫面向整个互联网资源,目标数据的范围十分广 泛,可以在大型搜索引擎中利用。在网络爬虫工作中, 首先抓取网页,其次利用搜索引擎在通用爬虫的地址队 列中加入准备爬取的地址,随后再爬取网页上的内容, 在爬取之后,可以存储爬下来的数据,并且在本地保 存,在这一过程中可以去除重复内容。此外还要针对爬 取的数据落实预处理,提取重要的文字,同时需要落实 分词和噪音消除等操作。
聚焦网络爬虫是根据预定主题爬取网页,对比通用 爬虫,爬取目标是有关主题的页面,可以提取海量数据 库中的重要信息,因此可以节省硬件和网络资源,同时 可以满足特定人群的信息需求。增量式网路爬虫主要是 通过爬虫程序全面监测网站数据,有利于及时爬取更新 的数据,还可以继续爬取没有爬完的数据,也可以爬取 网站没有更新的数据 [2]。
2 概述 Python 网络爬虫的架构
Python 爬虫架构主要包括爬虫调度器和 URL 管理 器以及 HTML 下载器等部分。爬虫调度器负责统筹其 他部分的协调工作。URL 管理器负责链接 URL,同时 负责提供获取新 URL 链接的接口。HTML 下载器用于 下载网页,如果下载的网页存在乱码问题,需要注意网 页编码。HTML 解析器获取下载的 HTML 网页,可以 解析新的 URL 链接,解析网页字符符串,并且在数据 存储器存储解析的有效数据。
3 新闻聚合系统的工具
3.1 网络爬虫
网络爬虫是一种机器人,可以根据特定规则自动化 获取网络信息。在实际工作中主要是利用以下工具获取 信息 :(1)Scrapy :Scrapy 是一种简单的信息抓取框架, 不仅可以抓取 Web 站点,而且可以进一步提取结构化的 数据。Scrapy 用途十分广泛,可以在数据挖掘和监测过 程中利用 ;(2)BeautifulSoup 是一种 HTML 解析器, 可以提取网页内容,但是不能将 BeautifulSoup 作为单 独网络爬虫工具 ;(3)Link Grabber :Link Grabber 是 一种利用 Python 编写的库,可以提取网页中的定位器, 也可以提取锚标记内的文本。
3.2 网络爬虫的比较
在网络爬虫性能衡量过程中主要是综合爬行能力 和处理能力两个方面。Scrapy 是 Python 的爬行框架, 其处理能力属于轻量级,而且需要另一个库,例如需 要利用 BeautifulSoup 解析复杂结构的 HTML 页面。 BeautifulSoup 需要另一个库, 在实际工作中需要进一 步开发。BeautifulSoup 的处理能力比较强,可以解 析复杂格式的 HTML 页面, 此外 BeautifulSoup 可以 利用附加库快速解析 HTML。Link Grabber 的基础为 BeautifulSoup,具有很强的处理能力 [3]。
3.3 比较 Web 应用程序框架
在 Web 应用程序框架比较过程中主要是参考速度 和性能两个方面。例如 CodeIgniter 速度较快, 在客户 端请求处理过程中,整体开销比较小。整体框架比较简 单,可以发挥出加密和数据库查询生成器以及路由等基 本功能,但是无法发挥出更高级的功能。Laravel 的速 度属于中速,接收客户请求的时候将会产生较多的处理 开销。Laravel 的性能优良,其中包含较多的内置特性, 例如包括用户身份验证库和高级路由以及模板引擎等。 此外还包括名称空间和类自动加载。
3.4 解决方案
通过上文的比较,利用 Laravel 框架作为 Web 应用框架,这是因为 Laravel 框架具有现代化的体系结构, 同 时具备 PHP7 特性,而且具备有关新闻聚合系统的发展功 能。利用 Laravel 框架可以可以简单的创建 API, 这是因 为 Laravel 框架就具备高级的路由,同时可以发挥出单 元测试功能,同时将 BeautifulSoup 作为网络爬虫框架。 因为 BeautifulSoup 框架比较简单,并且具有良好的性 能,可以在解析格式复杂的 HTML 页面中利用 [4]。
4 设计解决方案
4.1 解决方案的架构
(1) Laravel 框架是一种 PHP 框架,可以托管应 用程序 CMS,可以为移动客户端提供 API, Laravel 框 架在 MySQL 数据库中存储应用程序数据,还可以通过 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.IO[6]。
4.2 开发方法
利用敏捷开发方法具有较高的适用性,向客户交付早 期软件,研究人员可以早期测试客户端应用程序。客户端 主要是利用移动应用程序和 AI 新闻分析器,还可以利用 测试驱动开发方式,开发人员可以测试模块功能,完成测 试工作之后可以利用一个函数传递需求, 避免发生代码重 构,也可以避免产生错误代码,因此在部署之前已经测试 了代码,因此在本项目 API 开发中可以利用 TDD。
4.3 API 设计
API 用例中主要包括普通用户和认证用户,认证用户 具有 API 令牌,而且一些 API 端点主要是针对认证用户 开放。用户利用数据注册系统,完成注册之后可以登录系 统,系统可以结合用户系统身份发送访问。在系统登录之 后可以设置参数获取新闻列表,并且可以恢复相关信息, 认证用户可以评论和恢复获取的新闻,并且还可以获取个人数据,例如可以获取新闻阅读历史和新闻喜好列表 等,同时可以定期更新新闻偏好,同时可以设置通知。
4.4 解决方案的架构
在爬虫设计过程中需要合理设置日志文件,例如在 Linux 环境中缺乏合适的文件,在任务计划过程中,爬 虫程序的输出将会淹没命令行界面。用户启动爬虫之 后, 如果用户想要获取数据, 可以利用 Sina 启动爬虫。 为了简化工作任务,可以设置爬虫全面扫描站点,可以 充分利用每个站点的配置文件。
在爬虫设计过程中,首先需要设置限制标记, 如果 页面希望限制页面提取数量,需要设置限制标记 ;其次 需要和孩子调试标记,如果用户发生错误需要立即退 出,通过设置调试标记可以辅助用户向站点配置文件 ; 再次设置详细标记,如果用户要想看到爬行操作进度, 可以设置详细标记 ;最后需要设置输出标记,用户可 以确定输出目标。例如用户可以选择向 JSON 文件中输 出,还是选择在数据库中进一步处理数据。
为了优化爬虫性能,用户一方面可以添加配置文件, 另一方面也可以添加输出程序。用户向爬行器中添加配 置文件,也可以利用爬虫阅历网站,并且可以跟踪页面 数据。为了更加便利的利用各种类型的信息,用户可以 创建程序类,设置结果输出为不同的数据格式。
5 结论
本文研究了基于 Python 的新闻聚合系统网络爬虫, 研究的爬虫不仅可以提取新闻站点数据, 还可以根据用户 设置的配置文件提取提前数据, 还可以根据用户需求选择 数据输出方式。为了优化爬虫性能,在今后发展过程中需 要进一步更新和完善爬虫,提高用户使用的便利性。
参考文献
[1] 时春波,李卫东,秦丹阳,等.Python环境下利用Selenium与 JavaScript逆向技术爬虫研究[J].河南科技,2022.41(10):20-23.
[2] 王子予,郝艳华,关涵文,等.基于Python网络爬虫技术可视 化分析公众应对暴雪冻雨被窝呢气象的反应[J].中华卫生应急 电子杂志,2021.7(06):379-381.
[3] 刘杨.基于Python网络爬虫技术分析国内主流编程语言职 位热度[J].电脑编程技巧与维护,2021(05):35-37.
[4] 周竞鸿.大数据背景下依托于Python的网络爬虫技术研究 [J].信息系统工程,2021(03):69-70+73.
[5] 钟机灵.基于Python网络爬虫技术的数据采集系统研究[J]. 信息通信,2020(04):96-98.
[6] 赵俊杰,李思霖,孙博瑞,等.浅谈大数据环境下基于Python 的网络爬虫技术[J].中国新通信,2020.22(04):68.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/54430.html