广州市二手房价数据分析.doc
《广州市二手房价数据分析.doc》由会员分享,可在线阅读,更多相关《广州市二手房价数据分析.doc(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 本科毕业设计(论文) 广州市二手房价数据分析 Data Analysis of Second-hand Housing Prices in Guangzhou院 (系) 计算机科学与技术学院专 业 软件工程班 级 软件工程8班学 号 16210120805学生姓名 罗浩南指导教师 麦日升提交日期 年 月 日 毕业设计(论文)原创性声明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行的设计(研究)工作及取得的成果,论文中引用他人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包含他人已经发表或撰写的作品及成果。对本文的研究作出贡献的个人和集
2、体,均已在论文中作了明确的说明。本人完全意识到本声明的法律结果由本人承担。 毕业论文作者(签字): 签字日期: 年 月 日指导教师评分: 评阅教师评分: 答辩小组评分: 总评成绩: 系主任签字(盖章): 年 月 日广州市二手房价数据分析内容摘要随着随着新中国的繁荣昌盛,国民的生活水平大大提高,人民购房的需求愈来愈多,出现了很多带有房价数据的网站,这些数据可以为各个领域的发展提供良好的帮助。这种情况下,为了能让客户更好地选择适合他们心仪的房子,就要更好的对这些数据进行获取。因此,加强对房价网使用爬虫技术获取数据的研究具有重要意义,促进我国房价市场更好的发展。本选题的意义是设计并实现对广州市二手房
3、价的数据分析,利用大数据爬虫房价网去分析每个地域的房价,为用户提供一个可以最直观了解到广州市房价的具体信息。采用python的scrapy爬虫框架对链家网数据进行爬取,并将爬取到的数据输出为csv格式文件,再使用tableau对数据进行分析与可视化。 关键词 scrapy框架 房价 数据可视化Abstract With the prosperity of New China, the standard of living of the people has been greatly improved, the demand for housing is increasing, and the
4、data in various fields are increasing, so that the current society can enter the era of big data, which can provide good help for the development of various fields. In this case, in order for people to better choose the right house for them, it is necessary to better access these data. Therefore, it
5、 is of great significance to strengthen the research on house price net using crawler technology to obtain data, and to promote the better development of house price market in China. The significance of this topic is to design and realize the data analysis of second-hand house prices in Guangzhou Us
6、ing the big data crawler house price net to analyze the housing price trend of each region, to provide users with a most intuitive understanding of the housing prices in Guangzhou specific information. The python scrapy crawler frame is used to crawl the data of Lianjia net, and the crawling data is
7、 output into csv format file, and then the data is analyzed and visualized by tableau.Key words: scrapy Housing Data Visualization目 录第一章 绪论11.1 选题背景及意义11.2 国内外研究情况11.3 本文组织架构2第二章 相关技术概述32.1 爬虫技术32.2 scrapy框架介绍32.3 常见抓取策略92.4 Robot协议102.5 Tableau简介112.7 xpath112.8 Cookie122.9 Selenium与WebDriver122.10
8、 proxy代理14第三章 系统分析153.1可行性分析153.2功能需求分析153.3需求概述153.4数据获取153.5数据分析153.6数据展示16第四章 系统总体设计174.1爬取对象简介174.2总体架构设计174.3反爬机制18第五章 爬虫具体实现215.1 爬虫目录结构215.2 预设模块215.3 抓取模块225.4 cookie池235.5 代理池255.6 运行截图265.7 数据展示28第六章 数据分析与可视化296.1房屋特征词云296.2二手房型和关注人数分布296.3各区房价分布图296.4 房区受欢迎程度30结论31参考文献32第一章 绪论1.1 选题背景及意义1
9、.2随着信息技术的迅速发展,现在的网络行业信息已经出现出了爆炸式的快速增长,互联网上的用户通过使用搜索引擎后就可以轻易地在国际互联网上进行搜索并得到大量的行业数据与技术信息。所以,如何建立连接和获取信息已经不再是困扰用户的难题了。众多互联网用户在网上找房子,房价越来越透明,由此产生了大量的数据与信息,本文将以链家网为爬取对象,使用scrapy爬虫框架爬取互联网房价情况,由此对现今房价情况进行分析。Python语言具有丰富的库,曾被誉为胶水语言,其可以连接多种语言,例如Java,c等语言。其中scrapy库被使用的最多。Scrapy是Python语言进行开发的, 他是为了爬取网站数据而生,而且其
10、是开源的, 可以频繁的用来进行数据爬取信息处理。使用Scrapy,可以以最快的速度,根据自己的需求,爬取所需要的数据, 然后保存网页数据为任意数据格式。1.2 国内外研究情况国内外许多技术专业人员和研究机构对该技术进行了长期深入的研究。自上世纪90年代以来,许多计算机工作者一直在研究这项技术。目前,履带技术已经日趋成熟。许多世界著名的商业搜索引擎,如谷歌,Yahoo,其核心模块是网络爬虫,采集范围广,速度快,爬虫技术是1990年由蒙特利尔大学的学生艾伦埃塔奇(Alan Emtage)发明的。尽管当时还没有现在意义上的万维网(World Wide Web),但是已经有百万,千万的网络文件分散存在
11、,它通过脚本代码,自动化从网络上搜寻文件,索引其相关的信息,对于使用者来说,他们可以通过既定的表达式来查询文件。受此启发,在1993年左右,美国的研究机构开发了一款类似该功能的搜索工具,此时的搜索工具除了索引文件之外,还能够检索网络页面。另外,国内也有很多研究网络爬虫系统的机构和学者。以“天网”搜索引擎为例。它是由北京大学开发的主从式网络爬虫。主节点根据爬虫程序的性能适当地分配任务。它专门负责对特定的网站进行抓取,采用广度优先的遍历算法策略进行抓取。对于天网系统,不仅可以用来搜索普通网站,还可以搜索FTP站点的信息数据并且方便了用户查找,查询文件。国内还有许多非常优秀的相关学者和研究人员也做了
12、大量的工作。2015年,马连帅等人设计了基于分布式网络新闻采集系统Scrapy的数据采集框架。在分析新闻网站的结构特征的基础上,根据其结构特性,设计了关键词字段抓取和爬虫抓取策略。涉及到动态呈现的网页时,像Selenium这样的自动化测试框架可以用来模拟特定的浏览器操作来呈现结果页面进而解决无法访问的问题。利用Redis缓存数据库管理抓取队列,通过Scrapy中间件设置请求延迟和访问网站阻塞IP地址的问题。在研究爬虫策略和爬虫框架的细节中,我们可以发现制定合适的爬虫策略和爬虫系统架构是非常重要且非常有必要的。在这整个系统化的工程中,可以说每一个环节都是紧密相连的。考虑到了Scrapy已经有比较
13、成熟的文档和扩展,开发起来相对会轻松一点,可以达到预期的结果。1.3 本文组织架构本文根据scrapy框架使用pycharm编写python程序,从链家网爬取到数据以后输出csv文件,再用tableau根据不同地区、坏境,地铁等条件对房价进行分析,并将分析的数据可视化展现出来。第一章是引言部分。在本章主要阐述了整个项目的以及项目的背景介绍。分析了爬虫从开始到选择的历史,目的是为了说明该项目的重要性,最后基本简单介绍了论文大概结构和框架。第二章对相关的技术进行了概述。在本章里主要介绍该系统开发中可能会涉及到的主要技术,大致上包括scrapy,Robot协议,Tableau,xpath,cooki
14、e,selenium,webdriver以及proxy代理等。第三章是对爬虫每个模块架构的描述。主要是对系统进行了可行性和功能性这俩部分的模块架构描述。第四章则是各个模块代码实现。主要是从爬取对象,反爬机制,总体系统的架构设计来介绍。第五章是对爬虫爬取的数据的分析与可视化,用了多个例图来作详细介绍,还包括详细的运行过程和代码。第六章是对爬取到的房价数据进行分析,具体包括对房价以及人数分布,受欢迎程度,房价特征进行详细分析。最后是对此爬取房价数据进行了总结。第二章 相关技术概述2.1 爬虫技术网络爬虫可以根据代码规则来自动爬取网站上的一些相关信息,并可以存入数据库。目前有很多家国际互联网公司或者
15、个人使用爬虫,其中包括百度,谷歌等网站,爬虫可以把一个网页上的内容都存储下来,然后对网站上的一些内容进行获取和更新,爬虫的架构主要分为三个模块,分别为数据的采集,数据处理和数据的存储。但是在爬取数据的过程中,爬虫会发出大量的请求,并且网站的开发人员可以检测到都是一个Ip地址请求的,于是网站维护人员就会把该Ip地址拉入黑名单,从而导致爬虫程序发生异常,这种方法有一定的误伤率,容易导致正常的用户也无法访问。也有一些网站是通过cookies这个文件来判断这个请求是否是机器还是人,或者判断该访问请求的权限,正常用户在登录网站的时候,就会留下自己Cookies信息,爬虫可以通过分析网页的代码来进行模拟人
16、为请求,从而拿到正常的cookies信息,因此有些网站又新增了验证码这个方式,增加了爬虫正确爬取的难度,有些技术比较强的网站,甚至还会设置Session,当爬虫能拿到服务器对用户的标识Id时候,才能够拿得到Cookies信息。2.2 scrapy框架介绍2.2.1 scrapy简介scrapy是一个网站程序抓取框架,用于抓取一个网站内的数据和用于提取网站结构化的数据或非结构化的数据。它目前可以广泛用于企业数据挖掘、数据处理和历史数据分析存储等一系列应用中。它最初是为进行页面上的抓取(确切地点来说,是专为网页数据抓取)而进行设计的,可以广泛应用于网页服务接口(就比如说amazon associa
17、tes web抓取服务)或获取爬虫引擎返回的网页数据。python是一种高度相互集成的计算机软件编程语言,具有丰富的源和开源库。scrapy框架促进爬虫的设计和工作更加快速、简单,具有很高的程序健壮性和可扩展性。scrapy在爬虫设计中得到了非常广泛的应用,符合本文所设计爬虫的特征。因此,用scrapy来完成这项研究。2.2.2 scrapy框架组件图2-1 scrapy框架组件如所示图2-1是基于scrapy组件框架的结构图,包括各种组件和系统中发生的各种数据流的概述。图中涉及的组件主要包括:程序执行器和引擎(scrapbyengine)、spider、item、pipeline、调度器、下
18、载器和下载前中间件middleware。下面是对每个应用程序组件的简要介绍。1引擎(Scrapy Engine) scarpy的数据流程都由scarpy引擎控制。控制整个系统数据在组件中的走向以及有着相应的触发操作。2调度器(Scheduler) 爬网和执行任务的优先级序列通常都是由任务调度器作于维护。调度器自动从引擎接收请求对象,并将这些请求对象直接插入到引擎队列中,以便在以后使用scarpy引擎从引擎发送请求时直接向引擎提供请求对象。每个动态爬虫可以维护自己的动态内存中心队列,一个内存中的队列不能在多个爬虫之间直接共享内存中的队列。由于requset对象的主体结构是result组成,所以在
19、调度模块中的请求对象会比较紧凑。3下载器(Downloader) 下载器主要负责实时获取每个页面、每个模块的数据,将这些获得的网页数据实时提供给搜索引擎。下载器导出和下载页面后,将自动生成下载页面的文件,并通过下载器的中间件将响应发送到scrapy引擎。之后,由响应引擎处理。4爬虫(Spider) 爬网程序是一个由用户编写的组件,用于从响应中提取要爬网的项和请求对象。一个网站项目通常可以对应于多个爬虫程序,每个爬虫程序通常负责自动处理一个或多个新网页。scrapy用item来保存从非静态结构化对象数据中,通过爬虫获取得到的所有结构型对象的数据。 5数据管道(Item Pipeline) 数据抓
20、取管道是一个负责数据处理的item。数据对应的每个函数request都可能会自动产生多个新的item处理对象,数据处理管道对每个新的item处理对象可以进行三种处理,比较典型的三种处理方式有爬虫数据管道清理、权限等级验证及数据管理持久化。 6下载器中间件(Downloader middlewares) 下载器的中间件通常是位于加扰器引擎和下载器之间的一个特定挂钩,称为下载器中间件,是直接处理下载器并传输链接到搜索引擎的文件响应。下载器上的中间件还提供了一个便捷的下载机制,通过插入自定义代码的操作来扩展Scrapy功能。7Spider 中间件(Spider middlewares) spider
21、上的中间件是位于scrapy engine及爬虫(spider)之间的特定俩个钩子(specific hook),分别用来处理爬虫的responser和一堆item对象中的requestsm的输出。spider对于中间件有一种十分方便快捷的扩展机制,同时用户可以很方便地自定义代码来扩展scrapy的功能。2.2.3 scrapy工作原理scrapy的框架是由执行它的引擎驱动的控制程序操作的数据流。第一步,当引擎打开一个网站时,它可以找到一个正在处理该网站的爬虫程序,并自动从该网站爬虫程序请求不需要爬虫的网站请求。在第二步中,引擎自动从爬虫程序获取不需要爬网的第一个网站任务的数据,并在数据调度器
22、中以爬网任务文件的形式调度数据。然后向调度程序发送不需要爬网的下一个文件任务的请求。再次,该schedul将不需要爬网的下一个文件任务的请求返回给爬网引擎,该引擎通过该爬网引擎的中间件将爬网任务内容转发给下载引擎;步骤四,下载程序自动执行下载处理任务。一旦下载程序下载了页面上的内容,下载程序会自动生成一个已经属于下载页面的响应,并通过下载程序上的中间件向爬虫引擎发送一个响应任务;第五步,引擎从旧的下载程序中间件接收并获得一个响应,并将其发送给新的爬虫引擎,通过新的爬虫引擎的中间件进行下载处理。在spider处理响应之后,引擎然后返回通过爬网到引擎获得的项新数据任务。步骤六,引擎将任务转发到数据
23、处理管道,对从爬网程序库获得的项进行爬网,并将从生成的任务转发给调度程序;第七步,重复第二步,直到这个调度器中没收了有待引擎处理的一个任务,引擎才会关闭该任务网站。在scrapy框架中实现的url子类的重复数据消除方法是通过类的RFPDupeFilter来实现的,具体来说,调用子类中的request_fingerprint类型的重复数据消除方法,直接达到重复数据消除的目的。程序代码的基本结构格式如下。可以看出,在上述两段代码中,被删除和重用的指纹信息块和指纹函数分别使用了4个组件,通过sha1算法组合得到了一个sha1 (method+URL+body+head)。scrapy框架本身提供的动
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 广州市 二手 房价 数据 分析
限制150内