数据科学—基于机器学习的数据分析.doc

上传人:一*** 文档编号:68718356 上传时间:2022-12-29 格式:DOC 页数:44 大小:803.78KB
返回 下载 相关 举报
数据科学—基于机器学习的数据分析.doc_第1页
第1页 / 共44页
数据科学—基于机器学习的数据分析.doc_第2页
第2页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《数据科学—基于机器学习的数据分析.doc》由会员分享,可在线阅读,更多相关《数据科学—基于机器学习的数据分析.doc(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、北京理工大学珠海学院2020届本科生毕业设计数据科学基于机器学习的数据分析学院 信息学院专业:姓名:指导老师:自动化谢文华学号:职称:160104105563冯伟功讲师中国珠海二二 年 五 月35诚信承诺书本人郑重承诺:我所呈交的毕业论文数据科学基于机器学习的数据分析是在指导教师的指导下,独立开展研究取得的成果,文中引用他人的观点和材料,均在文后按顺序列出其参考文献,论文使用的数据真实可靠。承诺人签名: 日期: 2020 年 4 月 12 日数据科学基于机器学习的数据分析摘要Web网页数据挖掘技术在上个世纪80年代早就已经有了初步的研究,随着互联网的迅速开展和大规模数据时代的开展,从“冰山一角

2、”的大量数据中寻找潜在有用的价值信息,数据挖掘技术起到了不可忽视的作用,并成为当下最抢手的钻研热点之一。近年来,该技术快速进步,在工程、医学与科学等多种行业都取得了巨大的成果,其研究价值也随之增高。随之传统的Web爬虫技术也称为网页机器人或者网页蜘蛛,它是一个对网页数据进行批量的下载的程序。面向传统的Web页面的网络爬虫通常采用的方式是对网页中的超链接关系的对外进行扩展,从而获取整个互联网中页面的信息。基于python的Web爬虫需要对网站中的各个节点之间的进行研究,以便获得整个网站的节点关系图。在网络爬虫开发中,Python是最为普遍运用的设计言语。Python在爬虫设计中具备特殊的优势,其

3、丰厚的开源库和优异的代码封装使得Python爬虫逐步成为了潮流。本次毕业设计就是在这个背景下进行的,主要采用了python语言设计程序,其丰富的库函数能够找出网页的xml结构,并运用正则表达式对数据进行筛选。最后将数据存入mysql数据库展开保存,方便后续的操作。本文旨在方便考研调剂挖掘,为考研学子以后咨询信息提供了一条更加便捷和可行的方法。关键词:数据挖掘;考研;python;爬虫AbstractWeb page data mining technology has already had preliminary research in the early 1980s. With the r

4、apid development of the Internet and the development of large-scale data era, it is looking for potentially useful value information from the large amount of data in the Iceberg. Data mining technology has played a role that cannot be ignored, and has become one of the most sought-after research hot

5、spots. In recent years, the technology has made rapid progress and has achieved great results in various industries such as engineering, medicine and science, and its research value has also increased. The traditional web crawler technology, also known as web spiders or web spiders, is a program tha

6、t downloads web pages in bulk. The web crawler for traditional web pages is usually extended by externally expanding the hyperlink relationship in the web page to obtain information about the pages in the entire Internet. A python-based web crawler needs to study between the various nodes in the web

7、site in order to obtain a node relationship diagram for the entire website. In web crawler development, Python is the most commonly used design language. Python has a special advantage in crawler design, its rich open source library and excellent code encapsulation make Python crawlers a trend. This

8、 graduation design is carried out in this context, mainly using the Python language design program, its rich library function can find the xml structure of the web page, and use regular expressions to filter the data.Finally, the data is stored in the mysql database and saved for subsequent operatio

9、ns. This paper aims to facilitate the excavation of the examination and adjustment, and provides a more convenient and feasible method for consulting information after the postgraduate students.Key words: Data mining;postgraduate;python;Crawler目录数据科学基于机器学习的数据分析I摘要IAbstractII1 绪论11.1课题的来源、意义和目标11.1.1

10、课题的来源11.1.2课题的意义11.1.3课题的目标12Python 数据挖掘技术概述32.1 Python爬虫框架Scrapy框架32.2 数据预解决相关技术介绍52.3 爬虫解决过程中使用的函数库63系统需求分析和设计83.1可行性分析83.1.1技术可行性83.1.2操作可行性83.2考研调剂信息获取存在的问题9如今,伴随着因特网的遍及和Web 技术的高速发展,互联网大数据也因此诞生了。从早期的公告信息,发展到如今的论坛、官网的大数据累积,各种各样的信息收集方式早已成爆炸式的速度发展。由于网络平台的特殊原因,相比于普通网页,在进行考研调剂信息获取时候,很可能会存在以下几种问题:93.3

11、考研调剂信息获取的目标103.4 考研调剂信息获取设计103.5 考研调剂信息存储设计113.6小结124系统的实现134.1爬取对象简介134.2系统总体结构144.3各模块实现细节144.3.1 预规则模块144.3.2 页面数据爬取模块154.3.4 信息检索模块214.4 总结225 系统测试235.1测试环境235.2运行测试235.2.1 url链接访问测试245.2.2 数据收集测试265.3 总结276 结 论286.1 设计评价28参考文献29致谢311 绪论1.1课题的来源、意义和目标1.1.1课题的来源全国加入考研大军的人数逐年升高,越来越多的人觉得考研难。第一、报名人数

12、增长速率已远远超过了实际录取名额增长速率,从2009年报名人数124.6万,报名录取比列2.9:1,到2019年报名人数已上升为285万,报名录取比列为4:1。第二、国家统考和高校自主命题难度也越来越大。随着信息技术的发展,考研“参赛者”谁在最短时间内掌握的信息最全面,谁就能在考研之路上先人一步。我们应尽早寻找调剂信息,同时合理地分析自身情况,分数和相关信息来选择能够得着的调剂院校和专业。对于这些考研复试中的重要信息,各种大大小小的网页和网站均公布相关调剂细则信息,由于时间不够,节奏紧凑,考生常常没有慎重考虑,最终可能导致考研失败。因此,掌握足够的考研信息才是王道。若调剂信息过多而杂乱,很可能

13、会造成研究生生涯的困扰。此次毕业设计论文之所以选择该主题,主要是由于考研本来就是一件非常辛苦但又非常有意义的事情,大家都想为之一搏。此外,也希望能够在本次设计中积累经验,能为今后编写更完善的程序奠定基干。1.1.2课题的意义由于大多数人在初试准备上花费了大量精力和财力,对于复试没有足够的掌握常常会选择调剂复试。这类考生应该尽早的掌握重要的复试信息,按照本人的状况和已有的复试信息抉择可调剂院校及专业。调剂和复试一般是同步进行的,学校官网都会发布特定调剂的信息,但学生常常没有时间去慎重选择,最终可能导致考研失败。因此,通过网络信息爬虫技术进行考研调剂信息爬去,具有非常现实的意义。1.1.3课题的目

14、标本论文将会针对小木虫论坛,结合python爬虫技术对小木虫论坛调剂信息库数据进行挖掘。本论文具体的工作如下:(1)数据采集和储存:爬取的数据必须是实时的,若是历年的信息则没有什么价值。然后采取特定的格式存入数据库。(2)网页的爬取:需要涉及IP池等信息以模仿用户浏览,并适当降低爬虫爬取速度,这样能最大化的避免反爬虫的阻碍。(3)数据清洗:在特定的XML语言标签下获得的数据还需要经过数据清洗,使用正则表达式进行匹配,选取合格的数据。(4)数据挖掘:若相关数据已存储在数据库中,用户需要根据自己想要的规则进行有价值的信息挖掘。则第四步至关重要。1.2文章组织结构 本文的组织结构如下:第一章 绪论。

15、本章主要是对当前国内考研和调剂过程的状况和本文的研究方向进行概括性的介绍。第二章 相关技术介绍。针对性地介绍了本系统在设计和实现时采用的相关知识和重要技术。系统采用的技术包括:动态爬虫技术,Beautifulsoup数据预解决技术,pandas数据清理技术,逻辑结构Mysql数据库技术。第三章 系统需求分析。普通的爬虫技术难以爬完所有的网络平台信息,因此需要对网站指定特定的的分析。本章节对小木虫爬虫论坛的数据挖掘流程就行阐述。第四章 系统的实现。本章对第三章中挖掘流程的实现。包含了预解决规则、数据爬虫、数据存储和数据检索几个部分。第五章 系统测试。验证爬虫的可行性和正确性,并且展示了爬冲运行的

16、结果。第六章 结论。大概的总结上文已介绍的内容,同时阐述了在本次毕业设计中的收货和感谢,并表达了对未来研究的期望。2Python 数据挖掘技术概述2.1 Python爬虫框架Scrapy框架2.1.1网络爬虫介绍对于爬虫技术,它的别称为Web Spider,Web machine。而且一般情况下,爬虫能够爬到所有Internet内容。搜索核心启动器是爬虫最依赖的工具,网站也只能依靠搜索核心启动器,用户才会浏览网络资源。网站中常常含有大量数据,一般人夜以继日是难以全部获取完其所有的信息。而有了网络爬虫,这种问题将得以实现。网络技术的崛起使得大批信息能装载在网站上,那么问题来了:如何更好地提取和运

17、用它,爬虫技术施展了很重要的作用。另外爬虫技术查找信息上也相对准确,能够通过最合适的数据推出。在大数据解决方案中,Web爬虫能够对爬取的数据进行剖析从而得出相对精确数据。2.1.2 Scrapy框架介绍 Web爬虫框架拥有良好的解决优势。Scrapy是一个用Python编写的运用程序框架,用于对网站数据进行爬行并提取构造数据。简单轻巧且非常方便。用户在使用时,只需设计几个相关的功能模块能够很容易地实现一个简单的爬虫程序,用于抓取大量网络数据,使用十分便利。 Scrapy使用了扭曲的异步网络库来解决网络通信,大大提升下载速率,并且无需自己去实现一些框架内容。灵活地实现一些接口功能和大大小小的爬虫

18、需求。Scrapy框架主要模块如图2-1: 图2-1 Scrapy框架核心启动器:框架核心,负责各部件间的通讯信号数据传递,当事件触碰到特定的触发器功能,并开始执行相应解决。调度工具Scheduler:在上一模块的基础上,它负责解决request请求,并保留url链接资源可供后续操作。即存储已抓获的数据,并确定url队列的优先级,决定接下来会执行的url链接。页面下载工具:负责接受核心启动器从调度器拿到的url链接资源并下载html页面信息,获得请求体。还可提高网址的下载速度,将互联网的response返回给爬虫engine,再由engine传递由爬虫解决。Spider :它是框架的核心,负责

19、接受核心启动器从下载器中拿出的请求体来提取我们需要的数据,并提取新的url链接资源给调度器部件。管道Item Pipeline:及时解决spider爬取的数据,并可设定相关的数据解决算法进行过滤。下载过滤中间件:预设置下载配置(请求任务和响应结果都会经过下载中间件),对核心启动器和下载器之间的通讯执行处置。代理商中间件proxies middleware:中间存放重要的中间件“身份”信息。如Agent和Cookies信息,相当于提供爬虫一个合法的访问“身份”。爬虫中间件spider middlewares:能够自行配置请求和响应信息,是爬虫逻辑业务解决层的重要部件,可有效的解决过程的input

20、和output。2.1.3 Scrapy执行流程框架运行流程大概如下:(1) 核心启动器需要第一个可调度器URL链接为下一次爬取任务做出准备。(2) 接下来核心启动器会把URL资源链接资源和request请求捆绑起来,同时传送给下载器。(3) 下载器把资源下载下来,进行响应应答分组。(4) 应答分组会被爬虫解析。如果成功解析出任务信息,则会传递给实体pipe进行解决和筛选任务。如果没有则直接跳过。(5) 最终当爬虫框架流程进行完并成功解析完网页信息,接下来URL会被存入调度器便于后期的抓取任务。Scrapy具体流程如图2-2:图2-2 Scrapy流程2.2 数据预解决相关技术介绍2.2.1

21、数据清理数据清理通过填补缺损的属性、检测并去除错误值、润滑的噪音数据并解决不同的特性来完成“清理”数据的目的。主要目的如下:达到数据的格式化标准、异常的数据被清除、将错误仔细纠正以及清除重复的数据。(1)数据收集出错数据收集出错大部分发生在数据收集初始阶段。在此阶段通常只用考虑普遍的错误类型,例如数据采集中输入出错。后续过程中往往需要人工干预次过程,纠结一些简单的错误。(2)离群点排除 相比于正常的标准数据,该过程主要是排除异常差距较大的数据。某个特征值属性中,有时会出现个别数据值异常的现象,它偏离了大部分正常的数据,也就是离群点的数据。当然正确的数据不一定就是非离群点数据。例如,某个学校突然

22、大规模招生,相比于其他学校来说,数据有明显的差异。虽然这条数据在现实中是正常的,但是为了数据挖掘的准确性以及避免该数据污染已有的正常数据,通常我们会把它视为异常数据,将其排除。(3)遗漏值排除在信息的收集过程中,往往会存在个别数据遗漏的现象。它可能是由于爬虫方式不准性造成的结果,或者是网站本身数据就没有完整的展示给用户。为了解决这一误差现象,我们能够删除这一数据,或大概估计一下遗漏值并加以补充。(4)重复数据排除网站的数据经常会更新变动,数据的变化可能就在一瞬间。但是网站数据一旦变动,那么大多数数据的整体位置也会发生变化。为了减少数据的冗杂度和删除无关多余的数据,我们需要时刻对已收集的数据进行

23、检查,合并重复数据,这能够提高数据的唯一性。2.3 爬虫解决过程中使用的函数库2.3.1 pymysql库介绍 Pymysql是一个可连接数据库服务器的一个功能库,此外Mysql是一种relation型数据库。通过制定的爬虫技术,能够获取网站上的数据。传统的关系型数据库,能够存储简单的数据格式,操作也很方便。而非关系型数据库能够存储多种复杂度不同的数据。所以,我们要根据数据格式来选择合适的数据库。 与其他语言有所不同,pymysql可直接提供数据库服务,只需要简短的几行代码即可完成数据库的增删改查。Python库的高可用性和高封装性能够带来很多便利。数据库配置代码见图2-3。import py

24、mysql.cursorscn=pymysql.connect(数据库地址及端口信息) 图2-3 数据库配置 当连接数据库后,在cn实例中可进行相应的操作。2.3.2 requests库介绍 请求库是基于urlib,并且是基于python代码编程的。它使用Apache2许可命令的HTTP库,该库能够自动对HTML页面进行爬行,可主动解决网络提交和申请。它是Web数据获取和网页结构解析的基本代码库,通常可应用在网络爬虫与信息截取。在urllib基础上它更简易,能够有效提高效率,十分符合HTTP规则要求。换句话说,requests库就是用python实现的一种轻松简便的HTTP库。 另外,随着互联

25、网技术的急速提升,网站的反爬虫技术也变的更严格。简单的反反爬虫技术有:设置head请求头,代理IP池,降低爬虫访问速度等。2.3.3 BeautifulSoup库介绍 BeautifulSoup是一个用于解析Html页面,xml文档等文件的python模块,通过它我们能够轻松的解析出网站上重要的数据。相比于正则表达式和Xpath, BeautifulSoup使用非常简单,但查找速度则相对会慢一些。2.3.4 pandas 库介绍 它是基于Numpy而开发出来的,可专门用于数据分析的一种python代码库。另外Pandas也添加了许多数据模型和函数算法,提供了许多能有效解决大规模数据的工具。相比

26、于其他语言分析数据的效果,它还拥有了大量能使我们快速简便地解决大规模数据的工具,因此Python也当之无愧成为了健壮而速效的数据分析环境。 本文使用pandas与mysql交互式配合使用,在做预解决分析过程中,通过解决缺失值、数据清洗、消除噪声值等操作,更好的维护了数据的准确性和唯一性。2.3.4 Tkinter库介绍 它可以实现GUI用户程序界面的设计,由于Python语法简单明了,本文使用Tkinter能快速实现小工具界面的编程过程且稳定性良好,没有太多复杂的逻辑代码。2.4 小结本章主要是介绍了此次爬虫设计和实现中有采用的相关技术和方法。首先在数据收集阶段,Scrapy爬虫框架能自动解决

27、大量复杂的网络信息,Beautifulsoup能更方便地解析网页数据,另外requests工具能有效地解决网络请求和异常。然后爬取的数据会通过pymysql导入mysql数据库中,以方便后续分析和使用。最后pandas工具能解决异常数据且能挖掘数据地价值。最后在一下章中,系统需求分析将会被详细介绍。3系统需求分析和设计3.1可行性分析3.1.1技术可行性如今的网络爬虫技术早已基本成型了,Python拥有丰富的函数库和功能流程框架,能够清晰地解析网页。Python现在有两种版本:python2.x(即将退役)和python3.x,两个版本功能和语法上差别还是挺大的。本文运用的是python3.6

28、版本代码。3.1.2操作可行性Python的语法十分简约:假如C和JAVA需要使用上千行的代码,python则使用几十行甚至几行就能够解决问题。这样的代码剪短易懂、容易上手,这就是为什么python近年来越来越流行的重要原因。3.2考研调剂信息获取存在的问题 如今,伴随着因特网的遍及和Web 技术的高速发展,互联网大数据也因此诞生了。从早期的公告信息,发展到如今的论坛、官网的大数据累积,各种各样的信息收集方式早已成爆炸式的速度发展。由于网络平台的特殊原因,相比于普通网页,在进行考研调剂信息获取时候,很可能会存在以下几种问题:(1)传统爬虫不适用于复杂的数据形式 因为网络平台数据没有一致的标准,

29、用户可根据自己想法自由发布。同时,数据形式也多种多样,比如语言,符号,中英文结合等文字存在。这导致了互联网信息的多样性,传统爬虫难以实现爬取过程。(2)原信息中数据异常,需要仔细过滤网络平台非常开放,每一位用户能够依据本人的需要发布个人的言语,所以导致了信息的发布方式多样化,比如移动终端和PC终端发布方式不同。大部分人发布信息的方式都没有规定的格式,有时很复杂有时很简洁。如何解决这些噪声数据将是我们最棘手的问题。另外一些无用的信息也会发布在平台上,比如广告信息和错误信息等。这些干扰信息很可能会大大降低总体数据的准确性,所以这种数据也要严格审查。(3)网络信息的时效性 互联网拥有高速的信息传播速

30、度,使得大量信息涌现在互联网上,使得网络信息拥有时效性。数据的更新很可能使得爬虫已获取的信息失效或者爬取的信息结构有误,因此我们应尽量减少爬虫爬取的时间和优化算法的复杂度,在尽可能短的时间内获取完一切精确的数据。(3)网站拥有强大的反爬虫技术 由于爬虫技术的崛起,如今的网站基本上都制定了一套独特访问规则来限制爬虫访问。普遍的办法有:使用者代理控制访问身份,地址限制访问速度,JS脚本验证和爬虫协议限制等五花八门的技术。防的一方不惜一切人力资源,尽可能增加爬虫的成本效益。而抓的一方不惜一切资本,竭尽全力获取资源。这就是如今互联网的反爬虫和反反爬虫的现状。3.3考研调剂信息获取的目标 为了能使爬虫自

31、动化、高效率、高准确的获取网络信息,爬虫需要拥有一套合格的制定方案。数据在被爬取过程中,要尽可能提高爬取速度,准确地爬取重要信息。数据在被爬取之后,要排除异常数据,如:重复值,缺失值,离散值等。另外数据在被挖掘价值过程中,我们要给合理制定数据库的数据格式,以方便数据价值明了清晰地呈现出来。需要满足的要求有:可用性:能高效、快速、准确地获取网站页面的关键信息。可扩展性:网络平台形式不一,良好的可扩展性可使爬虫能够在多个网站页面上进行数据爬取。高效性:良好的爬取策略能极大提高爬取速度,减少网站信息的变化所带来的影响。容错性:若出现异常情况,爬虫应该有能力解决异常信息。如:url链接资源不存在,网页

32、无法解析等情况。3.4 考研调剂信息获取设计3.4.1 实施步骤确定挖掘目标数据预解决 数据转化和集成储存数据图3-1 具体实施步骤根据图3-1具体实施步骤内容,下面介绍各项内容。确定挖掘目标:首先研究网页结构,确定需要挖掘的数据具体是什么(what),数据在哪里(where),怎么把数据挖掘出来(how),数据在存储的时候又有什么关系(relation)。当然这些目标不是一下子就能实现的,而是一点点的研究,弄明白后再添加进代码。数据预解决:该规则是在重要的解决之前对预存储数据执行的一系列解决方案。众所周知,我们所观察到的大数据不一定是完整的数据,这将导致无法直接挖掘。主要包括数据清理、数据降

33、噪、维规约、离散化等方式。数据预解决有如下多种方法:数据格式变换,异常数据清理,数据缩减,数据集成等,这些方法将会有效地提升数据发掘的效率和数据的品质。数据转化和集成:如何将这些相彼此联络的分散式表层异构数据源有效地集成在一起,并且能使前端用户不用介怀不同系统间的数据差别以及用通明的方式来访问这些数据,这就是数据承继必须要解决的一个棘手的问题。数据转化则要让本来形式的数据转化成另外一种形式的数据,这两者关联非常紧密。 储存数据:将已经整理和归类的数据按照特定的算法进行储存。这样在后续的数据库访问能对号入座,达到事半功倍的查询已获取数据的效果。3.4.2开发语言(1)Python:本文使用的主要

34、语言,因为众多优秀的开发人员贡献了丰富的第三方库和标准函数库,python还有着“胶水语言”的称呼。在机器学习,人工智能等领域,python有用强大的移植性能和实现能力,致使众多互联网公司争先选择该语言。(2)XML:作为一种标记语言,XML 本身是被用来传送和展示数据。由于一些重要数据镶嵌在网页的Html代码中,程序无法直接搜索到这些数据。但一旦与python代码语言进行紧密结合的话,程序就能够快速搜索到数据,有助于后期进行解决。 (3)SQL:是一种特殊的构造化查询语言代码。在本文中使用的是mysql数据库进行数据的基本操作,将SQL语言嵌入在python代码中使用,更好地提高了爬虫程序的

35、操作功能。3.5 考研调剂信息存储设计本系统存储的流程如下:(1) 爬虫初始阶段,主节点自动连接Mysql数据库并清空相关表(2) 爬虫根据预爬取规则配置相关属性(3) 爬虫在访问数据库时,实时反馈运行状况,若访问出错则返回相应的误差代码。(4) 爬虫根据爬取策略,将爬取和筛选的结果存入调剂信息表中,并告诉系统已经爬取成功或失败。(5) 当爬取完成时,结束(4)循环,调剂信息表采用utf-8编码,内容见表3-3。表3-3 调剂信息表字段名称字段类型长度空默认值备注hrefsvarchar32否调剂公告schoolsvarchar20否调剂学校numbersint3是0招生人数timevarch

36、ar16否信息发布时间majorsvarchar20否招生专业与学院表主键为hrefs,此链接里面还有详细的调剂公告信息,但公告格式因学校而异,爬虫如果强行爬取其中的信息很可能会漏掉重要的细节而得不偿失。3.6小结本章节首先介绍了网站信息获取过程存在的一些问题,包括数据形式的多样性,异常数据难以清理,网站数据具有时效性,以及强大的反爬虫技术问题。之后提出了获取研究生复试调剂信息的目的,可行性分析,获取信息的步骤,最后还总结了信息获取后的存储问题。 4系统的实现4.1爬取对象简介 本系统实现的爬虫针对“小木虫论坛”来实现自动爬取,爬取数据主要为调剂学校信息,还包括一些学校内部调剂公告及联系方式信

37、息等子链接,爬取的数据还能包括一些其他的杂乱数据,后期将给出处理方案。“小木虫论坛”相比于其他信息网站来说反爬虫技术比较弱、信息比较齐全、信息更加专业、信息发布及时。小木虫爬虫论坛也是众多学术人员交流的平台,选取”小木虫论坛”作为爬虫目标,能够更好地上手研究爬虫技术并接触到更多隐藏内容,如登陆验证机制、网页结构解析等细节信息。如图4-1小木虫论坛网页结构,所需要爬取的属性名已圈出。图4-1 小木虫论坛网页结构4.2系统总体结构 本爬虫系统分为4个模块:预规则模块,页面数据爬取模块,数据存储模块,信息检索模块。 预规则模块:首先配备IP池、Cookies登陆、代理头配置实现“反反”爬虫技术。然后

38、提前设定将要获取的数据格式,初步限制异常数据。页面数据抓取模块:信息抓取是爬虫的核心功能,爬虫根据特定的爬取策略对页面进行自动化解析并高效率地完成任务。数据存储模块:根据网页抓取的结果及剖析,对爬取结果执行清理流程并筛选合格数据,然后存入数据库中或从调度队列中调度一个URL链接给Scheduler等待调度。信息检索模块:若数据库已存储了相关信息,则能够根据自己的.需要查询实时调剂信息。4.3各模块实现细节4.3.1 预规则模块Headers=“Accept”=”“Accept-Encoding”:”可接受的编码方式”“Cache-Control”:”缓存区设置”“Connection”:”连接

39、状态”“Host”:”起始IP”“Upgrade-Insecure-Requests”:”是否需要更新请求”“User-Agent”:”浏览器格式”Proxies=“所有可用的IP地址”Time.sleep(“IP访问间隔的时间”) 图4-2 预规则配置图(1)headers请求头中给出了一系列配置信息:Accept、Accept-Encoding、Accept-Language、Cache-Control、Connection、Host、Upgrade-Insecure-Requests、代理头。如此多完整的合法信息是为了给爬虫一个合法的身份,让反爬虫系统赋予爬虫合法的身份,否则无法进行访问

40、。 (2)Proxies是IP代理池,供爬虫程序随机切换自身IP的地址。小木虫论坛的反爬虫机制还是比较完善的,若重复IP一直快速爬取网站数据时,Web服务器端将会快速反应并限制爬虫行动,让爬虫无法再获取资源。如果重复使用一个IP身份爬取,由于爬虫爬取速度极快很容易被反爬虫系统识别出来并在一段时间内“封杀”IP,所以IP地址是后期大量需求的。 (3)如果遇到用户大量访问网站的高峰期,反爬虫系统对每一位用户的访问会最大化地限制及监控,这个时候Sleep函数能够派上用场。它能够根据参数信息,使得爬虫每爬取一个网页就“休息”一段时间,这样刚刚好躲开了“监视”。4.3.2 页面数据爬取模块class S

41、pider: hrefs = schools = majors = numbers = time = start_url = sql = INSERT INTO 调剂信息表 (hrefs,schools, majors,numbers,time) VALUES ( %s ,%s, %s,%s,%s ) def grap(self,cursor,cn): url_list = index = 1 for i in range(1000): url_list.append(self.start_url.format(i + 1) for url in url_list: print(正在解析url

42、: + url) response = requests.get(url) soup = BeautifulSoup(response.text, lxml) school = soup.findAll(tbody, class: forum_body_manage, tr) for a in soup.find_all(a, class: xmc_ft12, href=True): self.hrefs.append(ahref) # 获取当页的网站 for s in school: length = s.find_all(td) for i in range(len(length): if

43、 (i % 5 != 0): str = s.find_all(td)i.text if (i % 5 = 1):图4-3 页面爬取模块图4-3由以及几个功能支持:(1)给爬虫设定初始的url_list链接信息队列,其中start_url为起始域名,后面自动化访问的url链接都是在此基础上进行的。(2)需要爬取的数据为hrefs调剂官网公告链接,schools调剂学校,majors调剂专业目录,numbers调剂人数,time调剂信息发布时间。(3)通过嵌入式sql语言,python能够与Mysql进行交互式操作。(4)BeautifulSoup拥有强大的页面解析功能,能够将Html页面解析为

44、lxml分析库。Lxml作为python的一个页面分析库,支持html和xml的分析Xpath路径,即路径语言。相比于正则表达式来说,lxml功能强大使用方便。对于镶嵌在网页中的信息,lxml能够有效的“揪出”它。但如果爬取的信息非常巨大,lxml查找隐藏数据的速度会比正则表达式慢的多。最后,爬取过程如图4-4所示。图4-4为爬取过程图4.3.3 数据存储模块数据存储模块分为两个功能:数据预解决和数据存储。(1)数据预解决,此阶段是清理前一阶段的数据并更正找到的错误数据。 Pandas是一种基于NumPy的独特数据分解工具,主要是为了数据分解的创建的。Pandas拥有库函数和典型的模型数据,能够有效的解决多种数据模型分析,实现大数据的解析。具体流程如下:这里将mysql数据库转化为Data Frame二维的表格型数据结构,正好与mysql中的数据关系相对应。如图4-5数据转化核心代码,4-6为数据转化效果。import pandas as pdsql=”select * from 调剂信息表”Df0=pd.read_sql(sql,cn)Df=

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁