基于R语言爬取电商数据的价格销售分析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1 绪论 (3)
1.1 研究背景及意义 (3)
1.2 国内外研究现状 (3)
1.3 本文研究内容 (4)
2 相关技术简介 (6)
2.1 网络爬虫定义 (6)
2.2 R语言简介 (6)
2.3 Scrapy框架 (8)
2.4 数据挖掘技术介绍 (8)
2.4.1 日志挖掘 (8)
2.4.2 数据挖掘分析的过程 (10)
2.5 Heritrix简介 (11)
3 系统分析 (12)
3.1 系统可行性分析 (12)
3.2 功能需求分析 (12)
3.3 系统流程分析 (13)
3.4 性能需求 (14)
4 系统设计 (16)
4.1网络爬虫的模型分析 (16)
4.2网络爬虫的搜索策略 (16)
4.3网络爬虫的主题相关度判断 (18)
4.4 网络爬虫设计 (20)
4.5 功能实现 (22)
5 总结与展望 (29)
参考文献 (30)
致谢 (32)
1 绪论
1.1 研究背景及意义
随着网络的发展,越来越多的资源出现在人们面前,这时候人们就需要一种查询这些资源的方法,一种可以方便快捷获取自己想要的东西的方法。
这时候搜索引擎这种搜索工具就出现了。
网站拥有了较多内容后,首先考虑基于目录的内容分类,以解决信息快速定位的问题,随着内容量的进一步增加,很多内容在发表之后就很快被湮没,成为“信息孤岛”,而不断加深的目录结构也会让用户逐渐失去耐心。
这时,搜索引擎的优势就体现出来了:可以让处于“信息孤岛”状态的内容以一种更直接的方法提供给用户;和基于目录/分类的树形结构不同,基于关键词检索还可以让内容之间实现网状的关联结构,已经出现了许多类似的搜索引擎。
针对搜索引擎广阔的应用前景以及分析国内外搜索引擎的发展现状,根据全文检索系统的工作原理设计一种基于Internet的全文搜索引擎模型,它可以从互联网上获取网页,建立索引数据库,并采用数据库管理作业和多线程技术以提高全文搜索的性能和效率,从技术上可以适用于任何有搜索需求的应用。
1.2 国内外研究现状
网络爬虫,又称为Robots或Spiders,几乎与网络同时出现。
第一个网络爬虫是Matthew Gray的Wanderer,在头两届国际万维网会议上出现过数篇关于网络爬虫的论文。
但是那时候互联网上的信息规模比现在要小得多,那些文章中并没有阐述如何处理现在所面临的海量网络信息的技术。
每个搜索引擎的后台,都有相应的网络爬虫在工作着。
但是出于互相竞争的原因,这些网络爬虫的设计并没有公开,除了以下3个:Google Crawler,Internet Archive Crawler以及Mercator。
1990 年,万维网还没有诞生,但是人们已经开始频繁的使用网络来传输文件了,由于大量的文件分布在不同的终端上,如果对每个终端逐一的进行访问既费时又费力,于是蒙特利尔大学的学生Alan Emtage、Bill Wheelan 和Peter Deutsch开发了一个可以用文件名查找文件的系统,也就是Archie。
它存储了一个FTP 文件名列表,当用户输入文件名进行搜索时,它会告诉用户该文件是放在哪个FTP主机中,用户就可以直接访问这个主机获取文件。
深受Archie 系统的启发,1993年美国内华达System Computing Services 大学开发出了一个已经可以检索网页的搜索工具。
同年,麻省理工学院(MIT)的学生马休•格雷(Matthew Gray)开发出了第一个web robot 网络机器人程序,这个程序被命名为World Wide Web Wanderer。
虽然当时这个程序并不是以做搜索引擎为目的而编写的,但是它却促进了后来搜索引擎的发展。
网络机器人程序(Robot)也叫网页蜘蛛(Spider)或网络爬虫(Crawler)。
它是搜索引擎系统中负责抓取网页的文本信息、图片信息和其它信息的功能模块。
它利用HTML 文档中包含的指向其它页面或文件的链接信息,在分析完一个页面后转到其它链接继续分析,把分析出来的结果存入数据库。
Worldwide Web Wanderer 刚开始只用来计算互联网的发展规模,后来也发展成为能够抓取URL 的系统。
1.3 本文研究内容
本文主要分为五个章节,第一部分为前言,主要介绍了课题背景、研究意义、国内外研究现状等内容。
第二部分是相关技术的介绍,主要介绍了网络爬虫、R语言、Lucene等。
第三部分为系统分析,主要介绍了可行性分析功能需求分析等。
第四部分是系统设计,系统架构设计和功能设计是主要的设计内容。
第五部分是总结,主要对全文进行了总结。
2 相关技术简介
2.1 网络爬虫定义
定义1:网络爬虫是一个自动提取网页的程序,它为搜索引擎从Web上下载网页,是搜索引擎的重要组成部分。
通用网络爬虫从一个或若干初始网页的URL 开始,获得初始网页上的URL列表;在抓取网页的过程中,不断从当前页面上抽取新的URL放入待爬行队列,直到满足系统的停止条件。
定义2:主题网络爬虫就是根据一定的网页分析算法过滤与主题无关的链接,保留主题相关的链接并将其放入待抓取的URL队列中;然后根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。
所有被网络爬虫抓取的网页将会被系统存储,进行一定的分析、过滤,并建立索引,对于主题网络爬虫来说,这一过程所得到的分析结果还可能对后续的抓取过程进行反馈和指导。
定义3:如果网页p中包含超链接l,则p称为链接l的父网页。
定义4:如果超链接l指向网页t,则网页t称为子网页,又称为目标网页。
主题网络爬虫的基本思路就是按照事先给出的主题,分超链接和已经下载的网页内容,预测下一个待抓取的URL及当前网页的主题相关度,保证尽可能多地爬行、下载与主相关的网页,尽可能少地下载无关网页。
2.2 R语言简介
R是用于统计分析、绘图的语言和操作环境。
R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
R作为一种统计分析软件,是集统计分析与图形显示于一体的。
它可以运行于UNIX,Windows和Macintosh的操作系统上,而且嵌入了一个非常方便实用的
帮助系统,相比于其他统计分析软件,R还有以下特点:
1.R是自由软件。
这意味着它是完全免费,开放源代码的。
可以在它的网站及其镜像中下载任何有关的安装程序、源代码、程序包及其源代码、文档资料。
标准的安装文件身自身就带有许多模块和内嵌统计函数,安装好后可以直接实现许多常用的统计功能。
2.R是一种可编程的语言。
作为一个开放的统计编程环境,语法通俗易懂,很容易学会和掌握语言的语法。
而且学会之后,我们可以编制自己的函数来扩展现有的语言。
这也就是为什么它的更新速度比一般统计软件,如,SPSS,SAS等快得多。
大多数最新的统计方法和技术都可以在R中直接得到。
3.所有R的函数和数据集是保存在程序包里面的。
只有当一个包被载入时,它的内容才可以被访问。
一些常用、基本的程序包已经被收入了标准安装文件中,随着新的统计分析方法的出现,标准安装文件中所包含的程序包也随着版本的更新而不断变化。
在另外版安装文件中,已经包含的程序包有:base一R的基础模块、mle一极大似然估计模块、ts一时间序列分析模块、mva一多元统计分析模块、survival一生存分析模块等等.
4.R具有很强的互动性。
除了图形输出是在另外的窗口处,它的输入输出窗口都是在同一个窗口进行的,输入语法中如果出现错误会马上在窗口口中得到提示,对以前输入过的命令有记忆功能,可以随时再现、编辑修改以满足用户的需要。
输出的图形可以直接保存为JPG,BMP,PNG等图片格式,还可以直接保存为PDF 文件。
另外,和其他编程语言和数据库之间有很好的接口。
5.如果加入R的帮助邮件列表一,每天都可能会收到几十份关于R的邮件资讯。
可以和全球一流的统计计算方面的专家讨论各种问题,可以说是全世界最大、
最前沿的统计学家思维的聚集地。
2.3 Scrapy框架
Scrapy属于R语言开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。
Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。
可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。
所谓网络爬虫,就是一个在网上到处或定向抓取数据的程序,当然,这种说法不够专业,更专业的描述就是,抓取特定网站网页的HTML数据。
抓取网页的一般方法是,定义一个入口页面,然后一般一个页面会有其他页面的URL,于是从当前页面获取到这些URL加入到爬虫的抓取队列中,然后进入到新页面后再递归的进行上述的操作,其实说来就跟深度遍历或广度遍历一样。
Scrapy 使用Twisted这个异步网络库来处理网络通讯,架构清晰,并且包含了各种中间件接口,可以灵活的完成各种需求。
2.4 数据挖掘技术介绍
2.4.1 日志挖掘
日志挖掘一般都包含以下几个过程:
(一)前处理数据
预处理日志数据挖掘中最重要的组成部分,其任务是将原始日志数据转换成格式的数据挖掘和模式发现在必要的依据,预处理可以简化数据挖掘的过程中,做出更客观的决定。
数据处理,包括数据清洗,用户识别,会话识别,分四步额外的路线。
1.清洗数据
数据清理是指将被处理导入到关系型数据库中,删除错误的值在Web日志数据,缺失值的日志数据,和其他人,而数据挖掘和Web无关的变量或数据清理,取得了经营目标工具;
2简介用户。
用户的识别,是要找到从日志数据的每个用户访问的地址,避免重复挖掘。
此时,由于在本地高速缓存中,在代理服务器和防火墙为用户动态分配IP地址的情况下,要确定的每个用户会变得非常复杂。
(二)模式发现
模式发现,数据预处理,数据挖掘算法对数据进行分析。
有几种方法统计分钟,分类,分组,关联规则,路径分析。
(1)的统计信息。
所述统计方法是通过分析会话文件中提取知识的最常用的方法,浏览时间,频率,和其他导航路径,平均值等的统计分析。
尽管缺乏深度,但仍然可用于提高网站的结构,增强了安全性系统,提高现场访问的效率等。
(2)分类。
类别包括开采技术将找到一个短期的还是数据的事件或特定群体的一个子集的规则的定义。
该技术是应用最广泛的各类业务问题,以一流的开采技术。
分类算法是决策树最流行的方法,除了神经网络,贝叶斯分类。
(3)基团。
分组是一个数据集成多个类别,因为有高浓度的数据之间的相似性,在同一类,和不同的类中,可以是在量之间的差数据。
技术团,没有预定义的类别和训练样本存在,所有记录将按照彼此之间的相似性的程度进行分类。
主要算法K均值,DBSCAN等。
(4)相关的规则。
这样做的目的是要利用上数据之间的关系的隐藏的相关
性分析,自动检测的隐藏模式以前未发现的,相关分析通常以规定的形式。
这时,利用先天的关联规则挖掘算法,FP-growth算法。
(5)路径分析。
路径分析可用于指定路径定期访问该网站的调整和优化的网站,它允许用户访问更加方便,快捷到所需的页面结构也可以用来备份聪明和有针对性的电子商务活动,按照灌木格局浏览普通用户。
(三)模式分析
基于所有上述过程中,原始数据进行进一步的分析,以确定用户的型态冲浪的规律,即利益和使用者的习惯,并描述了某些以提供对规划和决策建筑工地一个理论基础。
主要方法是:问题,OLAP技术和可视化技术。
2.4.2 数据挖掘分析的过程
(一)所要解决的问题
行业或机构所面临的数据挖掘需求总是很多,这个问题前,如需要形成一个研究问题本身,然后提取这一问题的模型很多次。
因此,数据挖掘用户的首先是一个共同的背景知识,了解需求,充分发挥数据挖掘的价值,我们的目标必须有一个明确的定义,这个决定最终想做的事情。
(二)获得的数据建立数据挖掘库来源
为了进行数据挖掘需要收集的数据源挖掘。
更多的时候,位于数据源中不同的数据源,因为在大多数情况下,需要及早治疗,修改数据,和外部数据经常在使用中遇到的,所以应该可以收集在一个数据库或库数据。
(三)数据分析和调整
数据分析是监管过程本身数据的深入研究,集中识别数据的模式和趋势,可以用船级社和其他技术进行具体分析的规则,主要目标是实现与各种因素的复杂
影响,有明确的关系,终于找到了因素之间的相互关系。
数据同步是基于数据分析处理和结论以上,数据以调整状态,并在数据的趋势有更好的理解的基础知识,那么这个问题应继续解释,数量,为消除数据的需求,根据整个数据挖掘过程产生新的知识或变量新组合,以反映国家的一个准确的描述。
(四)建模
这是数据挖掘的一个重要组成部分,经过加工和分析上面的步骤,问题仍然定义进行了调整,根据需求更多,你可以创建一个数据挖掘模型的数据的结构和内容。
在预测过程中,常用的神经网络,决策树,数理统计,时间序列分析,建立模型。
2.5 Heritrix简介
Heritrix是IA的一个开源,可扩展的web爬虫项目。
Heritrix工程始于2003年初,IA的目的是开发一个特殊的爬虫,对网上的资源进行归档,建立网络数字图书馆。
在过去的6年里,IA已经建立了400TB 的数据。
IA期望他们的crawler包含以下几种:
宽带爬虫:能够以更高的带宽去站点爬。
主题爬虫:集中于被选择的问题。
持续爬虫:不仅仅爬更当前的网页还负责爬日后更新的网页。
实验爬虫:对爬虫技术进行实验,以决定该爬什么,以及对不同协议的爬虫爬行结果进行分析的。
3 系统分析
3.1 系统可行性分析
技术可行性分析
本系统采用R语言进行开发,提示信息完善,界面友好有亲和力,本系统在技术方面是可行的。
操作可行性分析
本系统采用Windows开发,操作简单易懂,对用户来说不需要高深的计算机专业知识,只要会基本电脑知识,就可以方便的操作本系统。
经济可行性分析
由于本系统属于模拟的网络爬虫系统,整个系统并不算太大,因此开发成本不算太高。
整个开发过程由两个人参与,只需要两台PC机和上述的各种软件,就可以实现全部的开发任务。
由于PC机是我们各自原有的,而且无需专门升级硬件;而各种软件,又是能够在网上免费下载的,因此,整个开发成本可以说是非常的低廉,这也为我们以后进一步完善网站提供了非常大的方便。
在使用成本上,用户只需要拥有一台能够连接到国际互联网上的计算机,通过注册就可以在世界的任何一个角落使用网站的全部功能和服务。
而且对计算机的硬件的需求也不是很高,软件方面也没有特殊的需求,易于广大用的访问与使用。
因此,从经济可行性分析来看,这个网站体现了经济实惠,但是功能强大的特点。
3.2 功能需求分析
本系统目标是设计一个基于R语言的爬虫系统,主要功能需求包括以下方面:
(1)信息收集:在系统设计中,首先,要收集信息,从其它网站上收集信
息,将其它网站上收集的信息保存到数据库中。
(2)搜索实现:本系统是一个搜索系统,是专业为用户提供搜索服务的爬虫系统,用户需要搜索数据时,只需要在站内搜索栏中输入相关的关键字,系统就会自动进行匹配,将搜索出来的信息进行自动排列,然后展示给用户,满足用户的需求。
除此之外,还需要注意一点,搜索出来的数据是不是用户想要搜索的数据,在此之前,用户可以先输入想要查询的数据的关键字,系统先进行模糊查询,通过数据库匹配,然后进行分词,建立索引,将建立好的索引进行集合,然后返回给用户,供用户进行筛选。
(3)展示实现:在用户提交搜索请求之后,系统将搜索到的信息通过浏览器分页的方式,将搜索结果显示给用户,这些信息显示要满足简单、直观、交互性良好等具体目标和要求。
(4)安全管理:安全管理可以分为系统安全和数据安全,系统的安全需要做好程序判断和更新维护,数据安全需要做好数据备份。
3.3 系统流程分析
爬虫系统的工作流程主要包括五个步骤:aiohttp下载网页、asyncio异步框架、lxml配合xpath分析网页、pandas读取下载后的数据、bokeh生成网页显示。
爬虫系统流程图如图3-1所示:
图3-1 爬虫系统流程图
3.4 性能需求
本系统实现后应具有以下性能:
可靠性
本系统能够提供7×24小时持续访问的功能,从根本上确保系统实时有效和可用性,管理员会在每日凌晨特定时间段内对系统进行备份和维护。
系统中传输数据都是精准有效的,采用握手协议,保证数据不会丢失。
在权限设置方面,系统后台管理采用分级权限和逐级授权管理的功能,管理员可以对用户设置权限,也可以修改用户的权限,确保不同用户有不同的权限,不同权限对应相应的管理功能和范围。
可维护性
软件采用面向对象技术开发,对比面向过程的软件开发技术来看,面向对象的开发技术更容易维护和升级。
在系统开发中,设计师对软件进行严格管控,在开发过程中采用规范的文档管理,这样方便系统修改和维护。
在保证高聚合,低耦合的原则下,尽量做到软件规范模块化,使得软件的更新和修改极其方便,增强可维护性
可扩展性
保证在系统升级或者系统功能扩展,或者用户数量激等情况下,系统能够在保持现有系统功能和架构的情况下,平稳升级。
系统建设要求能够保护投资,同时,在服务器等硬件更新升级方面,在服务器的访问数据量和访问频度增加的情况下,能够通过增加服务器内存和硬盘的方式进行扩充,可以通过硬件升级解决大数据量和高访问频度的问题。
安全性
软件必须经过安全设置,能够保证运行时候的数据和功能的安全,同时要考虑账号的安全,以及完善安全漏洞。
此外,也要保证硬件设备的安全性,操作系统定期进行漏洞修复。
易用性
考虑到平台面向的是普通的消费者,这些消费者使用计算机的水平有限,所以,系统要容易操作,用户体验好,功能布局合理。
对于管理员后台管理,要提供完善和合理的管理流程。
兼容性
要求软件能够所有浏览器上的都可以运行,要考虑浏览器的兼容问题,要兼容主流的浏览器。
对客户端的要求不能太高,通常配置的台式电脑都可以使用。
可移植性
软件可以在不同操作系统之间进行迁移,考虑随着用户使用量的增大,需要使用linux操作系统进行负载均衡,所以保证系统在需要的时候平稳的迁移到其他系统。
4 系统设计
4.1网络爬虫的模型分析
首先建立URL任务列表,即开始要爬取的URL。
由URL任务列表开始,根据预先设定的深度爬取网页,同时判断URL是否重复,按照一定算法和排序方式搜索页面,然后对页面按照一定算法进行分析,并提取相关URL,最后将所得URL返回任务列表。
之后将任务列表中URL重新开始爬取,从而使网络爬虫进行循环运行。
4.2网络爬虫的搜索策略
本文的搜索策略为广度优先搜索策略。
如下图4-1所示。
图4-1 广度优先搜索策略示意图
1.定义一个状态结点
采用广度优先搜索算法解答问题时,需要构造一个表明状态特征和不同状态之间关系的数据结构,这种数据结构称为结点。
不同的问题需要用不同的数据结
构描述。
2.确定结点的扩展规则
根据问题所给定的条件,从一个结点出发,可以生成一个或多个新的结点,这个过程通常称为扩展。
结点之间的关系一般可以表示成一棵树,它被称为解答树。
搜索算法的搜索过程实际上就是根据初始条件和扩展规则构造一棵解答树并寻找符合目标状态的结点的过程。
广度优先搜索算法中,解答树上结点的扩展是沿结点深度的“断层”进行,也就是说,结点的扩展是按它们接近起始结点的程度依次进行的。
首先生成第一层结点,同时检查目标结点是否在所生成的结点中,如果不在,则将所有的第一层结点逐一扩展,得到第二层结点,并检查第二层结点是否包含目标结点,...对长度为n+1的任一结点进行扩展之前,必须先考虑长度为n的结点的每种可能的状态。
因此,对于同一层结点来说,求解问题的价值是相同的,我们可以按任意顺序来扩展它们。
这里采用的原则是先生成的结点先扩展。
结点的扩展规则也就是如何从现有的结点生成新结点。
对不同的问题,结点的扩展规则也不相同,需要按照问题的要求确定。
3.搜索策略
为了便于进行搜索,要设置一个表存储所有的结点。
因为在广度优先搜索算法中,要满足先生成的结点先扩展的原则,所以存储结点的表一般设计成队列的数据结构。
搜索的步骤一般是:
(1)从队列头取出一个结点,检查它按照扩展规则是否能够扩展,如果能则产生一个新结点。
(2)检查新生成的结点,看它是否已在队列中存在,如果新结点已经在队列中出现过,就放弃这个结点,然后回到第(1)步。
否则,如果新结点未曾在队列中出现过,则将它加入到队列尾。
(3)检查新结点是否目标结点。
如果新结点是目标结点,则搜索成功,程序结束;若新结点不是目标结点,则回到第(1)步,再从队列头取出结点进行扩展......。
最终可能产生两种结果:找到目标结点,或扩展完所有结点而没有找到目标结点。
4.3网络爬虫的主题相关度判断
主题爬虫的系统组成最初考虑是对页面的过滤,不像普通爬虫对所有页面的链接进行处理,先对页面与受限领域的主题相关度进行分析,只有当其主题相关度符合要求时才处理该页面中的链接,因为如果该页面和本领域比较相关,它所包含的链接和领域相关的几率也较大,这样提高了爬行精度,虽然会遗漏少数页面,但综合效果是令人满意的。
因此,主题相关度的分析是主题爬虫设计的关键。
主题蜘蛛将网页下载到本地后,需要使用基于内容的主题判别方法计算该网页的主题相关度值,主题相关度低于某一阈值的网页被丢弃。
什么是网页标题
通常浏览一个网页时,通过浏览器顶端的蓝色显示条出现的信息就是“网页标题”。
在网页HTML代码中,网页标题位于标签之间。
网页标题是对于一个网页的高度概括,一般来说,网站首页的标题就是网站的正式名称,而网站中文章内容页面的标题就是这文章的题目,栏目首页的标题。