数据爬虫初探:利用Data Miner挖取多伦多房地产MLS数据

mls13.png

本文将向读者展示利用Chrome插件Data Miner,抓取theredpin.com的房地产数据,并做简单分析的过程。

章节

  • Data Miner爬虫介绍与安装
  • TheRedPin MLS HTML代码分析
  • 建立爬虫XPath规则
  • 三维地图
  • SPSS简析
  • 导入微软Azure机器学习~

Chrome Data Miner 爬虫

首先,这是Data Miner插件的官方介绍:

Data Miner is an add-on for Google chrome browser that helps you extract data from web pages and into an Excel spreadsheet or CSV file.

简而言之,这款插件通过用户建立某些抓取规则,能够自动抓取网页上的目标信息,并且转化为更容易分析的格式(比如Excel文件)。

  1. 登录网站,用自己的Google账户即可创建新账号;
  2. 根据提示安装Chrome插件(https://chrome.google.com/webstore/detail/data-scraper/nndknepjnldbdbepjfgmncbggmopgden);
  3. Chrome右上角出现一个红色斧子的图标,就代表安装完毕了。

Data-Mining.png
PC: moveisfigueiredo.com

数据源:Theredpin

我们的房产交易信息的数据源来自TheRedPin。我们现在需要拉取多伦多城市目录下的所有MLS Listing。

https://www.theredpin.com/on-toronto/mls-listings-for-sale/page-1

打开这个页面后,在网页空白处点击右键,选择检查(inspect)。

mls1.png

好了,现在让我们点击刚才安装的Data Miner插件,点击红色图标,选择 Create Recipe。毕竟你要养的爬虫,得先把食谱喂给它,告诉它怎么吃饭(扒数据)不是?

这是一个列表式的网页,同样格式的信息反复出现。这样的网页就非常适合我们抓取啦!

所以,我们需要找到哪些格式的元素是反复出现的,给我们的蜘蛛框定一个重复的母区域。

mls2.png

通过用光标扫描右侧的代码,我们找到了MLS卡片所在的母框。这是一个div标签。那怎么告诉蜘蛛你的div标签在哪里呢?这里我们需要找到这个div标签的身份识别特征。比如这里的div有一个独特的bootstrap class名:listview-card-wrapper property-card image-active row collapse

<div class="listview-card-wrapper property-card image-active row collapse" data-id="1761360" data-fav-id="" data-listing-type="property"&amp;amp;amp;gt;

对于这样的标签,我们的XPath路径可以这样编写:


//div[@class="listview-card-wrapper property-card image-active row collapse"]

把它填写在 XPath for rows:

mls3.png

框定了row的范围后,我们可以开始定位具体的数据。在这里,数据列有:

  • 房源地址
  • 报价
  • 地图经纬度
  • 房型
  • 卧室、浴室
  • 住房面积
  • 贷款月供、返佣

比如寻找房源地址,同样利用Inspect工具,我们可以找到:

mls4.png

在这里,地址位于a标签,特征为 itemprop=”significantLink”

所以我们的XPath是:


.//a[@itemprop="significantLink"]

但是,我们发现,在定位房型、卧室、浴室、面积时,这4个数据列所在的div标签一毛一样,都是:<div class=”listing-attribute-val”> 1 </div>

mls5.png

那么,在我们录入出现过第二次的标签时,需要用括号把之前的标签括起来,在后面加上出现的次数:

所以,卧室的XPath是:

(.//div[@class="listing-attribute-val"])[2]

随后,把这些XPath录入XPath for columns,这个页面的抓取规则就做好了。

mls6.png

但是,这个Listing有237页啊!怎么让他自动翻页呢?

Data Miner提供了Autopagination的功能,和之前一样,我们需要找到“下一页”的按钮,并将其用XPath定位。

在html源码中,我们找到:

<a href="/on-toronto/mls-listings-for-sale/page-2/"><i class="icon icon-chevron-right white">

mls7.png

同理,它的XPath是:

//i[@class="icon icon-chevron-right white"]

mls8.png

把它填入自动翻页的设置,每3秒翻一次页,模拟浏览器点击。

一切完成后,点击开始自动翻页(Start Auto Pagination),蜘蛛就开始工作了。

mls9.png

嗯。

mls10.jpg

等待抓取完成后,我们可以把数据导出到Excel。一共采集到2355条有效数据。

mls11.png

接下来我们就可以用这些数据来干坏事啦哈哈哈哈!

mls12.jpg

由于时间关系,没有检查数据的可靠性,没有删掉无效数据和outliers。所以下面的图表可能都是错的。

比如将经纬度和价格数据导入三维地图。(Excel 2016)

mls13.png

喂 downtown的那根擎天柱是怎么回事?

热力图:

mls14.png

价格分布:(SPSS)

mls15.png

mls16.png

价格和贷款月供:

mls17.png

导入SPSS,3-D散点图:

mls18.png

mls19.png

别的就懒得截图了。

导入Azure Machine Learning

mls20.jpg

把data cleaning后,导入Azure ML的dataset。训练预测贷款月供。

Azure ML的操作已经写过了,在此不做赘述。(https://ysoup.org/it/azure-machine-learning-experiment/

mls21.png

部分预测结果:

mls21.png

mls22.png

发表新评论