基于网络爬虫的船舶求职信息采集方法研究外文翻译资料

 2022-08-14 16:09:53

英语原文共 12 页,剩余内容已隐藏,支付完成后下载完整资料


基于网络爬虫的船舶求职信息采集方法研究

摘要:近年来,随着人工智能、大数据、云计算等技术的不断发展,互联网上的信息日益繁荣,如何快速有效地获取目标信息成为一个亟待解决的问题。本文旨在研究网络环境下船舶求职信息的数据采集与获取问题。本文提出了两种基于网络爬虫的船舶求职信息采集方法。基于 Python 标准库和 Scrapy 抓取框架,设计并实现了相应的Web爬虫程序,从目标网站上抓取目标信息,最终将采集到的数据存储到本地文件中。通过对抓取的数据量和耗时的比较分析,结果表明,基于 Scrapy 爬虫框架的数据采集方法操作简单,易于扩展,具有针对性强、采集效率高、求职信息采集速度快等特点。幸运的是,收集到的数据不仅可以帮助研究人员进行后续的数据挖掘分析,而且可以为后续的航运求职信息数据库提供数据支持。

关键字:网络爬虫;python 标准库;Scrapy爬虫框架

一、引言

随着互联网、物联网等网络技术的蓬勃发展,于娟认为网络信息呈现爆炸式增长[1]。毫无疑问,互联网上的信息几乎涵盖了社会活动、文化、政治、经济、娱乐等各个方面。使用传统的数据收集机制(如问卷调查、访谈)往往受到资金和地理位置的限制。此外,客观事实往往是有偏见的,由于小样本的结果和低可靠性收集的数据[2]。因此,网络爬虫作为一种收集网页数据的有效工具应运而生。

网络爬虫通过URL(统一资源定位符)搜索网页,并直接将相关数据反馈给用户。因此,用户不需要通过浏览网页来获取 信息,这样既可以节省时间和精力,又可以提高数据采集的准确性[3]。抓取的主要目标是从非结构化或半结构化网页中提取结构化数据,以便进行后续的数据挖掘和分析。除了与航运有关的公司的信息服务网站,还有一些专门的航运服务网站,提供招聘或求职信息。本文以中国领先的船员求职招聘网站之一的 www.hy163 网站为目标网站,专门从事船员招聘、求职、招生、培训、考试、航海新闻等综合性船员信息服务。

二、网络爬虫

A.定义

网络爬虫,也被称为网络蜘蛛或网络机器人或蚂蚁或自动索引器,是“物联网”的核心概念之一。它实质上是一个程序或脚本,通过一定的逻辑和算法规则自动抓取和下载网络信息,这是搜索引擎的一个重要组成部分[6]。

B.网络爬虫理论

网络爬虫通常基于预先设置的一个或多个初始网页 url。然后遵循一定的规则抓取网页和获得的网址列表从最初的网页。每次抓取网页之后,爬虫程序将从网页中提取新的URL并将其放入未被抓取的队列中。接下来,来自未被爬行队列的URL将被递归访问并开始新一轮的爬行,这个过程将不断重复。抓取程序在队列中的URL被抓取或者其他预先确定的条件被满足之前不会结束。通常,关于爬虫如何工作的工作流程如图 1 所示。

图1.爬虫工作流程

C.相关的Python标准库

在开发爬虫程序时,相关的 Python 标准库是必需的。 在本文中 , 请求 、 时间和lxml库应该导入到Pycharm(一种Python集成开发环境)中。它们的功能如下表所示。

D.抓取框架

Scrapy[8]是一个开源的、协作的爬虫框架,用Python编写。它可用于数据采集[9][10]、数据挖掘[11]、网络异常用户检测[12]、数据存储[13]等方面。Scrapy 使用 Twisted[14]异步网络库来处理网络流量。整个结构如图2所示。

引擎、调度器、下载器、爬虫和项目管道是 Scrapy爬虫框架的主要部分。五个组件及其中间件的功能如下:

bull;Scrapy 引擎:爬虫框架的核心部分。控制整个数据处理系统,触发事务处理过程,负责每个模块的串行。

bull;调度器:接受 Scrapy 引擎发送的请求;确定下一个抓取URL,同时删除重复URL。

*下载程序:向网络服务器发送下载网页内容的请求,并将网页内容提交给一个爬虫进行进一步处理。

bull;spider:从网页中提取目标内容或新URL,定义域名过滤规则和网页解析规则。

bull;项目管道:处理从爬虫中提取的网页数据,主要任务是清理、验证、过滤和存储数据。

bull;中间件:中间件是Scrapy引擎、调度器、下载器和spider 之间的一个组件,它处理这些组件之间的请求和响应。

爬取过程是Scrapy引擎发送一个请求,然后调度程序将初始URL发送给下载程序。接下来,下载器向服务器发送服务请求,响应器将下载web内容,然后将内容提交给爬取器处理。之后,爬取器将解析页面内容。爬虫分析的结果有两种方式:一种是获得一个新的 URL,然后Scrapy引擎再次向调度程序发送请求,开始新一轮的爬取,并不断重复这个过程;另一种是获得所需的数据,这些数据将被转发到项目管道进行进一步处理。项目管道负责后期处理,如数据清理、验证、过滤、重复数据删除和存储,最后爬取的数据通常会写入本地文件或存储到数据库中。

三、基于 PYTHON 标准库的信息收集

在本节中,将根据Python标准库刮取目标信息。具体程序可以列举如下。

A.导入爬虫库

代码#-*-coding:utf-8-*-通常在Python程序的第一行中键入,以定义编码格式,从而避免操作中出现无法读取的代码。在这种情况下,请求、时间和lxml 模块被导入到爬虫程序中。

B.打开网址并获取源代码

Http://www.hy163.com/resume/?currentpage=1是一个开始网址,它显示了一些航运求职信息。该网站共有6361个网页和127188条信息,每页显示20条信息。不难发现,可以通过修改URL中最后一个数字的数值来获得不同网页的信息。例如,URL链接rsquo;***?当前第一页和第二页 Currentpage2rsquo;,number1和number2分别代表webpage1和webpage2,依此类推。应用获取源代码方法获取网页源代码,从lxml库中调用HTML()函数处理网页源代码,最后返回处理后的网页源代码。此外,在出现某些特殊情况时,应考虑特殊处理。

C.解析网页并获取目标信息

为了准确地收集网页上的目标信息,查看网页源代码以发现非结构化网页的特点是必要的。网页的部分源代码如下图所示。

在这种情况下,目标信息包括船员姓名、CV 编号、年龄、职位、证书、航行年龄、航行区域、船型、地址、船员性格和释放时间。从网页源代码观察,目标信息存在于td标签中,在tr标签下。为了准确地从网页源代码中提取目标信息,将xpath选择器从lxml模块中导入,并应用于提取目标信息。定义解析详细信息方法并编写xpath表达式以获取目标信息。例如,crewname的xpath表达是://tr/td/a/text(),这意味着将在此网页上提取标记aundertd标记中的所有文本信息。同样,也可以用同样的方法提取其他属性信息。由于网页异常,导致标签不同,应注意船员的个性特征和释放时间属性。因此,需要对船员字符和释放时间的xpath表达式进行修正,以获得准确的内容。

D.将收集的数据保存到本地文件中

使用open函数创建一个与append模式关联的txt文件,并将爬取的数据写入文件。此外,编码应该被修改来避免文件中出现不可读代码。

E.设置多页

该网站共有6361个网页,并设置了一个生成器以实现多页面效果。换句话说,调用range函数是为了完成所有网页。另外,为了减少程序的运行时间,还需要调用时间函数。

F.执行爬虫程序

在设计了爬虫程序之后,在 Pycharm 的控制台上运行程序并打印结果。因此,将在本地磁盘上创建一个包含目标信息的txt文件。

四、基于 SCRAPYCRAWLER 框架的信息采集

在理解 Scrapy 爬虫原理和框架的基础上,本节将基于Scrapy爬虫框架对目标信息进行爬取。具体程序可以列举如下。

A.创建一个爬虫项目文件

基于 Scrapy爬虫框架,只需在命令行中输入lsquo;scrapy startproject hangyunjobrsquo;命令 ,一个名为hangyunjob 的 crawlerproject文件夹就会自动创建。项目文件夹结构如图4所示。

项目文件夹结构中的 hangyunjob文件夹的顶层是项目名称。第二层包含一个与项目名称hangyunjob相同的文件夹和一个文件scrap.cfg。Hangyunjob文件夹是一个模块,所有的项目代码都添加到这个模块中,scrap.cfg文件是整个 Scrapy项目的配置文件。第三层有五个文件和一个文件夹,其中_init_.py是一个空的文件,其作用是模块化其父目录。Items.py用于定义存储对象,这些存储对象是用于收集爬取数据的简单容器。Middlewares.py文件是中间件,一般不需要修改,主要负责相关组件之间的请求和响应。Pipelines.py用于处理在items.py中定义的提取的数据。Settings.py是项目设置文件,用于设置项目管道数据处理方法、爬虫频率等。Spiders文件夹放在主爬虫文件和_init_.py空文件中。爬虫文件被命名为hangyunspider.py文件,用于实现爬虫逻辑,空文件的功能和上面的_init_.py文件是一样的。

B.网页结构分析

非结构化网站上的船员求职信息以表格的形式呈现,其属性信息包括船员名称、简历号、年龄、职位、证书、航行年龄、航海区域、船型、地址、船员性格、释放时间等。

C.修改Items.py文件

Items.py文件用于定义结构类似于Python字典的存储对象。定义对应于网页目标信息的十一个属性。

D.写入HangyunSpider.py文件

HangyunSpider.py文件是一个开发者定义的文件,用于实现爬虫逻辑。它包括以下部分:

bull;命名函数:定义独一无二的爬虫名。在本文案例下,爬虫名称为 hangyunSpider,它将在执行爬虫程序时使用。

bull;域名声明函数:定义域名范围。爬虫只允许在这个域中搜集信息。在这个例子中,域名范围是www.hy163.com。

bull;URL初始化函数:定义起始URL。如果没有指定特定的URL,该函数会定义爬虫将从哪里开始爬取的url列表中的URL。在本文案例中开始网址是http://www.hy163.com/resume/?currentpage=1。后续的url将依次根据起始 url中包含的数据陆续生成。

bull;解析函数:处理响应并返回刮取的数据。响应是网页请求后返回的数据。这个方法需要被覆盖来解析网页,提取items.py文件中定义的目标信息,并生成 一些URL等待进一步处理。

bull;选择器:Scrapy 有一套自己的选择器机制,可以通过特定的XPath表达式提取 HTML 文件的一部分。它的用法与第三节中介绍的Python标准库lxml相同。同样,应该小心处理船员角色和释放时间属性,以避免异常的发生。

bull;初始化类:键入lsquo;itemsHangyunjobItem()rsquo;。初始化为HangyunjobItem()类的项时,此类将从items.py文件导入。最后的项目将在赋值给每个项目之后返回,这些项目对应于items.py文件中的每个对象。

E.修改pipelines.py文件

pipelines.py文件中的process_item方法需要被重写。该方法用于网页数据的提取处理,包括数据格式转换、数据过滤、去重复等复杂操作。提取的数据会被写入本地文件或存储到数据库中。

F.修改Settings.py文件

许多网站都有一些规则和机制来限制爬虫爬取数据。因此,有必要采取一些措施,以免受到网站的限制。例如,设置 DOWNLOAD_DELAY属性,以防止爬虫速度过快,以至于网站禁止访问 IP 地址。此外,为了成功地访问网站,应该在程序中加入用户代理和引用者管道。

在ITEM_PIPELINES中的{hangyunjob.pipelines.HangyunjobPipeline: 300,}同样需要被设置,这意味着从解析函数返回的数据将依次被管道处理。

G.执行爬虫程序

修改以上四个文件之后,在命令行中键入 cmd 命令到爬虫程序所在的路径 ,然后键入rsquo;scrapy crawl hangyunSpiderrsquo;命令,以便最终运行爬虫程序并将目标信息存储在本地磁盘中。

五、网络爬虫结果分析

基于Python标准库和Scrapy爬虫框架,在执行爬虫之后,整个网站上的航运求职信息将会被收集并存储到本地txt文件中。

A.抓取的数据量

为了获取数据量,文件中的数据会被导入到 Excel文件中。实际上,这两种方法爬取的数据量是一致的。一共爬取到127,188条信息,如图5所示。由于文件包含更多的记录,这里只列出最后15条数据。

显然,当时这个网站上共有127,188条工作信息,如图 6所示。换句话说,网站上所有的航运求职信息数据被爬虫程序成功采集。

B.时间消耗

两种爬虫方法的时间消耗比较结果如下表所示。对于Python标准库方法,爬取所有航运求职信息数据的时耗约为4444.52秒,接近75分钟。而使用Scrapy爬虫框架只需要大约45分钟。

剩余内容已隐藏,支付完成后下载完整资料


资料编号:[234866],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。