广州市二手房价数据分析 带实证数据.docx
《广州市二手房价数据分析 带实证数据.docx》由会员分享,可在线阅读,更多相关《广州市二手房价数据分析 带实证数据.docx(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 本科毕业设计(论文) 广州市二手房价数据分析 Data Analysis of Second-hand Housing Prices in Guangzhou院 (系) 专 业 班 级 学 号 学生姓名 指导教师 提交日期 年 月 日 毕业设计(论文)原创性声明本人郑重声明:所呈交的毕业设计(论文),是本人在指导老师的指导下,独立进行的设计(研究)工作及取得的成果,论文中引用他人的文献、数据、图件、资料均已明确标注出,论文中的结论和结果为本人独立完成,不包含他人已经发表或撰写的作品及成果。对本文的研究作出贡献的个人和集体,均已在论文中作了明确的说明。本人完全意识到本声明的法律结果由本人承担。
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 data in various fie
4、lds 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 is of great signif
5、icance 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 Using the big data cr
6、awler 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 output into csv fo
7、rmat file, and then the data is analyzed and visualized by tableau.Key words: scrapy Housing Data Visualization目 录第一章 前言11.1 选题背景及意义11.2 论文工作内容1第二章 相关技术概述22.1 爬虫技术22.2 scrapy框架介绍22.3 常见抓取策略62.4 Robot协议72.5 Tableau简介72.6 常见反爬虫手段82.7 xpath92.8 Cookie92.9 scrapy的扩展工具102.10 Selenium与WebDriver102.11 prox
8、y代理11第三章 爬虫总体设计123.1 Scrapy的安装与使用123.2爬取对象简介133.3总体架构设计133.4反爬机制13第四章 爬虫具体实现154.1 爬虫目录结构154.2 预设模块154.3 抓取模块164.4 cookie池174.5 代理池194.6 数据展示19第五章 数据分析与可视化215.1房屋特征词云215.2二手房型和关注人数分布215.3各区房价分布图215.4 房区受欢迎程度22结论24参考文献25第一章 前言1.1 选题背景及意义随着信息技术的迅速进步发展,现在的国际网络行业信息已经出现出了爆炸式的快速增长,互联网上的用户通过使用搜索引擎后就可以轻易地在国际
9、互联网上进行搜索并得到大量的行业数据与技术信息。所以,如何建立连接和获取信息已经不再是困扰用户的难题了。众多互联网用户在网上找房子,房价越来越透明,由此产生了大量的数据与信息,本文将以链家网为爬取对象,使用scrapy爬虫框架爬取互联网房价情况,由此对现今房价情况进行分析。被称为胶水语言的Python, 具有丰富和强大的库, 如requests、urllib、scrapy和pyquery等, 其中scrapy库应用最为广泛。Scrapy是Python语言开发, 为爬取网站数据而设计的开源应用型框架, 可以广泛用在网站数据爬取,信息处理等诸多方面。使用Scrapy, 可以方便快速地按照自己的需求
10、, 保存网页数据为任意数据格式。1.2 论文工作内容本文根据scrapy框架使用pycharm编写python程序,从链家网爬取到数据以后输出csv文件,再用tableau根据不同地区、坏境,地铁等条件对房价进行分析,并将分析的数据可视化展现出来。第二章 相关技术概述2.1 爬虫技术网络搜索爬虫(曾被称为万维网络爬虫蜘蛛或简称网络爬虫机器人)通常是根据一定定义自动生成捕获万维网相关信息的程序和应用脚本。它们目前广泛应用于国际互联网上的搜索引擎和其他类似搜索网站。爬虫可以收集访问的所有页面内容,以获取和更新这些网站的内容。就功能而言,爬虫一般分为三个部分:数据采集、处理和存储。爬虫引擎在爬取某个
11、网站的数据时,会经常发生爬虫在短时间内就会发出大量访问的请求,但是所有的请求ip都是相同的一种情况。因此,网站管理人员会使用它来设置爬虫访问的延迟阈值,针对异常IP, 网站可以禁止其访问。但是由于大量用户公网IP相同,这种方法容易误伤普通用户, 所以, 一般采取禁止一段时间访问。还有一些网站通过浏览器请求信息中的cookies信息来判断该请求是否有权限访问核心数据, 一般网站直接输入用户的账号和密码即可成功登陆并获取cookies信息。这一操作爬虫可通过分析网页Html源码, 模拟发送请求, 就能正常获取cookies信息。于是部分网站设置了验证码等验证方式, 只有成功输入验证码, 才能获取c
12、ookies信息。同时, 部分网站还会设置Session方式进行账号认证, 只有获取服务器对用户的唯一标识ID, 才能得到cookies信息。2.2 scrapy框架介绍2.2.1 scrapy简介scrapy是一个网站程序抓取框架,用于抓取一个网站内的数据和用于提取网站结构化的数据或非结构化的数据。它目前可以广泛用于企业数据挖掘、数据处理和历史数据分析存储等一系列应用中。它最初是为进行页面上的抓取(确切地点来说,是专为网页数据抓取)而进行设计的,可以广泛应用于网页服务接口(就比如说amazon associates web抓取服务)或获取爬虫引擎返回的网页数据。python是一种高度相互集成
13、的计算机软件编程语言,具有丰富的源和开源库。scrapy框架使得爬虫的设计和工作更加快速、简单,具有很高的健壮性和可扩展性。因此,scrapy在爬虫设计中得到了广泛的应用,符合本文所设计爬虫的特点。因此,我用scrapy来完成这项研究。2.2.2 scrapy框架组件图2-1 scrapy框架组件如所示图2-1是基于scrapy组件框架的结构图,包括各种组件和系统中发生的各种数据流的概述。图中涉及的组件主要包括:程序执行器和引擎(scrapbyengine)、调度器、下载器、spider、item、pipeline、下载前中间件middleware。下面是对每个应用程序组件的简要介绍。1 引擎
14、(Scrapy Engine) scarpy的所有数据处理过程都由scarpy引擎控制。控制系统所有组件中的数据流,并在发生相应操作时控制事件。2调度器(Scheduler) 爬网和执行任务的优先级序列通常由任务调度器用于维护。调度器自动从引擎接收请求对象,并将这些请求对象直接插入到引擎队列中,以便在以后使用scarpy引擎从引擎发送请求时直接向引擎提供请求对象。每个动态爬虫可以维护自己的动态内存中心队列,一个内存中的队列不能在多个爬虫之间直接共享内存中的队列。由于requset对象的主体结构是由result组成的,所以调度模块中的请求对象比较紧凑。3下载器(Downloader) 下载器主要
15、负责实时获取每个页面的数据,并将这些获取者获得的网页数据实时提供给搜索引擎。下载器导出和下载页面后,将自动生成下载页面的文件,并通过下载器的中间件将响应发送到scrapy引擎。之后,由响应引擎处理。4爬虫(Spider) 爬网程序是一个由用户编写的组件,用于从响应中提取要爬网的项和请求对象。一个网站项目通常可以对应于多个爬虫程序,每个爬虫程序通常负责自动处理一个或多个新网站。scrapy用item来保存从非静态结构化对象数据中通过爬行获取到的所有结构型对象数据。 5数据管道(Item Pipeline) 数据抓取管道是一个负责数据处理的item。数据对应的每个函数request都可能会自动产生
16、多个新的item处理对象,数据处理管道对每个新的item处理对象可以进行三种处理,比较典型的三种处理方式有爬虫数据管道清理、权限等级验证及数据管理持久化。 6下载器中间件(Downloader middlewares) 下载器中间件通常是位于加扰器引擎和下载器之间的一个特定挂钩,称为下载器中间件,用于直接处理下载器并传输链接到搜索引擎的文件响应。下载器上的中间件还提供了一个简单方便的下载机制,通过插入自定义代码来扩展Scrapy功能。7Spider 中间件(Spider middlewares) spider上的中间件是位于scrapy engine及爬虫(spider)之间的特定两个钩子(s
17、pecific hook),用来分别处理爬虫的responser和一堆item对象中的requestsm的输出。spider这为中间件扩展提供了一种简单方便的扩展机制,同时用户可以通过直接插入一个自定义的程序代码来快速扩展所有scrapy的功能。2.2.3 scrapy工作原理scrapy的框架是由执行它的引擎驱动的控制程序操作的数据流。第一步,当引擎打开一个网站时,它可以找到一个正在处理该网站的爬虫程序,并自动从该网站爬虫程序请求不需要爬虫的网站请求。在第二步中,引擎自动从爬虫程序获取不需要爬网的第一个网站任务的数据,并在数据调度器中以爬网任务文件的形式调度数据。然后向调度程序发送不需要爬网
18、的下一个文件任务的请求。再次,该schedul将不需要爬网的下一个文件任务的请求返回给爬网引擎,该引擎通过该爬网引擎的中间件将爬网任务内容转发给下载引擎;步骤四,下载程序自动执行下载处理任务。一旦下载程序下载了页面上的内容,下载程序会自动生成一个已经属于下载页面的响应,并通过下载程序上的中间件向爬虫引擎发送一个响应任务;第五步,引擎从旧的下载程序中间件接收并获得一个响应,然后将其发送给新的爬虫引擎通过新的爬虫引擎中间件进行下载处理。在spider处理响应之后,引擎然后返回通过爬网到引擎获得的项新数据任务。步骤六,引擎将任务转发到数据处理管道,对从爬网程序库获得的项进行爬网,并将从生成的任务转发
19、给调度程序;第七步,重复第二步,直到这个调度器中没收了有待引擎处理的一个任务,引擎才会关闭该任务网站。在scrapy框架中实现的url子类的重复数据消除方法是通过类的RFPDupeFilter来实现的,具体来说,调用子类中的request_fingerprint类型的重复数据消除方法,直接达到重复数据消除的目的。程序代码的基本结构格式如下。可以看出,在上述两段代码中,被删除和重用的指纹信息块和指纹函数分别使用了4个组件,通过sha1算法组合得到了一个sha1 (method+URL+body+head)。scrapy框架本身提供的动态重复数据删除方法非常好。这种重复数据删除方法唯一能做的就是确
20、定一个地址请求需要指向的动态资源。在某些情况下,例如,需要请求一些新的动态资源web页面。url资源地址的后半部分通常分别有多个参数。如果参数中这些值的顺序稍微颠倒一下,就可能变成不同的资源web地址。 但是scrapy框架自己的重复数据消除方法有很多缺点,它使用sha1算法来消除160位信息的重复,例如指纹,或者20字节的信息。如果一个模块包含100万个页面,爬在一个单一页面的网站上,只需直接爬行来衡量这个模块就不需要占用20米的内存,如果还需要爬300个这样的单一页面的网站,直接爬模块就会占用6G的内存,这样的话,用一个垃圾网站自己的网址到这个模块,将会耗费大量的内存。2.2.4 scra
21、py的安装与使用在windows系统中,使用的是Anaconda,它是基于科学计算包的开发库的集合。包括许多使用python的开发库,包括scrapy所依赖的许多开发库。在使用anaconda的命令行窗口中,数据库使用命令conda install scrapy,然后开始安装scrapy框架。在开始爬网之前,我们需要做的第一件事是创建一个名为scrapy的项目,并将该项目传输到需要存储代码的文件目录。正在运行的命令是scrapy start project。执行项目命令后,将自动创建项目的文件夹。图2-2 scrapy安装在开始进行字典数据抓取的工作前,我们通常需要先编写好item.py这个文
22、件,因为这里的item.py就是我们用来保存通过爬取得到的文件和数据的一个容器,其和我们在python这个框架中的对字典拼写使用的方法非常类似,并且为了有效避免由于字典拼写错误导致的未正确定义字段的错误,还提供了额外的字典错误保护机制。如果我们已经学习过了django这个框架的话,会对于item.py感觉到很熟悉,因为我们觉得item有点像是类似django这个框架里的两个对象之间关系映射(orm)。定义一个好容器(item)后,就表示我们可以开始创建需要抓取spider的文件了,spider文件夹中需要分别定义三个文件属性,name这个属性的文件夹是可以用来说明如何区别抓取spider的。因
23、为同一个文件夹下可以存在那么多个需要抓取spider的文件。start_urls包含了需要抓取spider的列表和在重新启动的网页时候需要进行网页数据爬取的初始url列表。因此,第一个被完成获取下载到的页面将被认为是其中之一。后续的url是在获取初始url后,从下载的网页数据中提取的。Parse()是spider中的一种数据提取方法。当一个函数调用该方法时,在初始url对象获得下载后重新生成的每个spider响应对象都会将该函数作为惟一参数在下载后传递给该对象的函数。然后我们需要从初始spider需要抓取的网页中提取下载所需的网页数据。从初始网页中提取所需数据有许多步骤和方法。Scrapy是一
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 广州市二手房价数据分析 带实证数据 广州市 二手 房价 数据 分析 实证
限制150内