2.1 获取公寓房源数据
在 20 世纪 70 年代初,如果你想购买股票,就需要聘请经纪人,他们会收取你将近 1%的固定佣金。如果你想购买一张机票,你需要联系旅行社代理,他们将赚取大约 7%的佣金。
如果你想出售一间房子,你会联系一个房地产代理,他们赚取 6%的佣金。在 2016 年,你基本上可以免费地做前两者。而对于最后一项,情况仍然和 20 世纪 70 年代的一样,保持不变。
为什么是这种情况?更重要的是,这些与机器学习有什么关系?现实是,这一切都归结于数据,以及谁能够访问它。
你可能想象着通过 API 或爬取房地产网站,就能够很容易地访问珍贵的地产房源数据。
你错了,如果你打算遵守这些网站的条款和条件的话。房地产数据受到房地产经纪人国家协会(NAR)的严格控制,由他们运行多项房源服务(MLS)。这是一种聚合房源数据的服务,只有经纪人和代理商可以使用它,而且还需要花费巨资。所以,可以想象,他们不太希望任何人都能大量地下载这些数据。
这是不幸的,因为开放这些数据无疑会催生许多有价值的消费者应用程序。对于占家庭预算最大比重的购买决策而言,这点看上去尤其重要。
话虽如此,也不是完全没有希望。虽然依据条款所言,直接从 MLS 提供商获取数据是被禁止的,但是我们可以利用第三方工具来拉取数据。
现在,我们来看一个有用的工具,它可以帮助我们获取所需的数据。
使用 import.io 抓取房源数据有许多优秀的、基于 Python 的库用于抓取网页,包括 requests、Beautiful Soup 和 Scrapy。
我们将探讨其中的一些,后面的章节还会讨论更多。为了达到此处的目的,我们将使用免费的替代方案:
Import.io(http://www.import.io)是一个免费的、基于 Web 的服务,它会自动抓取网页。这是一个很好的选择,让我们可以避免从头开始创建一个网络爬虫。好在,它为房地产的房源数据提供了一个示例 API 接口,数据来自 Zillow.com。
图 2-1 的图片来自 http://www.import.io/examples。在 import.io 的搜索框中输入 Zillow.com,检索 Zillow 数据的样例。
他们所提供的数据是有关旧金山的,不过在我们的例子中将使用纽约。为了更换城市,需要使用我们感兴趣的数据所在的网址,来替换演示所提供的网址。
为了实现这点,我们可以打开一个单独的浏览器选项卡,并导航到 Zillow.com。在那里执行一个公寓搜索。让我们将公寓搜索限制在曼哈顿地区,价格在$1500 到$3000 之间。
如图 2-2 所示。
一旦有结果返回,我们需要从浏览器地址栏中复制 Zillow.com 站点的 URL,并将其粘贴到之前选项卡中 import.io 的提取框中。
复制图 2-2 中 Zillow.com 地址栏中的 URL。并将其粘贴到 import.io 的提取框中,如图 2-3 所示。
单击左上角的提取数据(Extract Data)按钮,你将看到一个结果表,只显示你想要的数据。
现在,我们可以通过单击“下载 CSV”(Download CSV)按钮,轻松地下载这些数据。
弹出的对话框会问我们需要下载多少页,从结果页可以看出在 Zillow 的搜索返回了 2640条结果,我们需要下载 106 页来获得整个数据集。而 Import.io 仅仅允许我们下载 20 页,现在也只能如此了。
本书评论