返回博客
使用案例
罗伯特·蒙切阿努2021年7月14日阅读时间:10分钟

网络搜索房地产数据完全指南

网络搜索房地产数据完全指南

为什么要搜索房地产数据

通过网络搜索,可以确保提取的房地产信息准确、可信,并且是最新的。这样,人们就可以预测房地产市场是否会很快暴涨,或者了解自己的房产将在哪个价格区间竞争。

对于企业来说,网络数据是非常宝贵的,因为它可以帮助企业做出更好的决策、更好的定价和更大的利润空间。然而,问题在于每一点信息都需要尽可能新鲜,因此网络刮擦就成了显而易见的解决方案。

最常提取的房地产数据类型如下:

  • 物业类型
  • 销售价格
  • 地点
  • 尺寸
  • 便利设施
  • 月租金
  • 停车位
  • 物业代理

上述信息可以决定一家房地产中介公司的成败。它在沟通、策略和效率方面都有很大的不同,但最大的优势在于经纪人如何更好地了解他们的房产和市场。之后,就是找到合适的客户了。

让我们来看看能说明网络搜索价值的几种情况:

房地产机构

  • 决策:承担风险是工作的一部分,但这并不意味着你必须盲目行事。在买卖之前进行研究是工作的必修课,更多的信息意味着更好的交易。
  • 预测市场:了解何时买卖房产才能获得最佳和最有利的结果,这一点至关重要。有些类型的房产大受欢迎,而有些则黯然失色。 有些地区蓬勃发展,有些地区却停滞不前。了解转角处的情况是企业长盛不衰的关键。

普通民众

网络搜索并不完全是为了帮助企业。事实上,它之所以如此流行,部分原因在于它对于个人来说是多么容易使用。当然,你需要一些计算机科学知识,但有很多教程可以提供帮助。这就是其中之一!

  • 买卖:在买卖之前,您需要准确推断房产的价值。如果您把儿时的房子卖掉,一周后却在房地产网站上看到它的价格翻了一番,那就太可惜了,不是吗?
  • 投资:如果您喜欢投资房产,无论是以较低的价格买入,然后卖出获利,还是仅仅出租房产,都强烈建议您了解自己的收支平衡速度和预期收益。

好了,用例就讲到这里。让我们来看一些代码!

首先,假设我们正在纽约市寻找新房。我们想买一套至少有两间卧室的房子,当然还要有一间浴室。因此,我们将从Realtor 上开始搜索,从中提取数据并进行比较,以找到最合适的交易。

从网页中提取内容的方法有很多种。本文将介绍两种方法:一种是我们从头开始创建网络刮刀,另一种是我们使用已有的工具。

首先,让我们尝试自己动手。一旦我们使用了专业的网络搜刮工具,这些代码就会被证明是有用的。  

构建网络搜索器提取房地产数据

我选择用 Python 编写,是因为它在网络刮擦中非常流行。 我们有一个用 Python 提取网络数据的通用教程,你应该去看看!

检查网站代码

我们需要提取的数据可以在上述网页的嵌套标签中找到。在我们开始刮擦之前,我们需要找到它。为此,只需右键单击元素并选择 "检查 "即可。

在房产列表图片上右键单击,浏览器右键菜单中“检查”选项被高亮显示

此时会弹出一个 "浏览器检查框 "窗口,如下图所示:

Chrome 开发者工具“元素”面板中,对房产列表结果卡片中的 HTML 进行高亮显示

在这个窗口中,我们将导航查找标签和类,在这些标签和类下可以找到我们的基本数据。一开始可能会有点吓人,但随着经验的积累会越来越容易!

查找要提取的数据

We can see that everything we need to extract is within the <li> tag with the class ‘component_property-card’. If we go even deeper in the tag, we observe that the data referring to the number of beds and bathrooms are under the attribute ‘data-label’ with the values ‘pc-meta-beds’ and ‘pc-beta-baths’, respectively. Knowing this, we can proceed with writing our code!

准备工作空间

如前所述,我们将使用 Python 作为编程语言,因此需要下载并安装它。

您可以使用任何您觉得合适的集成开发环境,但我推荐使用PyCharm

创建新项目后,使用这些库可让您的工作更轻松:

  • Selenium用于网络测试和自动化浏览器活动。
  • BeautifulSoup:用于解析 HTML 和 XML 文档。
  • 熊猫用于数据处理。提取的数据将以结构化格式存储。

在项目中安装它们非常简单。只需在项目终端使用以下命令行:python -m pip install selenium beautifulsoup4 pandas

编写代码

让我们先导入之前安装的库:

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd

要从网站上提取数据,我们必须通过配置 Webdriver 使其使用 Chrome 浏览器来加载数据。为此,我们只需指定chromedriver所在的路径。不要忘记在最后添加可执行文件的名称,而不仅仅是其位置!

driver = webdriver.Chrome('your/path/here/chromedriver')

除了床位和卫生间的数量,我们还可以了解地址、价格以及房产的面积。我们掌握的信息越多,就越容易确定新家的位置。

声明变量并设置要搜索网站的 URL。

prices = []
beds = []
baths = []
sizes = []
addresses = []
driver.get('https://www.realtor.com/realestateandhomes-search/New-York_NY')

我们需要从网站中提取数据,如前所述,这些数据位于嵌套标签中。找到具有前面提到的属性的标签,并将数据存储到上面声明的变量中。请记住,我们只想保存至少有两张床和一间浴室的房产!

content = driver.page_source
soup = BeautifulSoup(content, features='html.parser')
for element in soup.findAll('li', attrs={'class': 'component_property-card'}):
   price = element.find('span', attrs={'data-label': 'pc-price'})
   bed = element.find('li', attrs={'data-label': 'pc-meta-beds'})
   bath = element.find('li', attrs={'data-label': 'pc-meta-baths'})
   size = element.find('li', attrs={'data-label': 'pc-meta-sqft'})
   address = element.find('div', attrs={'data-label': 'pc-address'})

   if bed and bath:
       nr_beds = bed.find('span', attrs={'data-label': 'meta-value'})
       nr_baths = bath.find('span', attrs={'data-label': 'meta-value'})

       if nr_beds and float(nr_beds.text) >= 2 and nr_baths and float(nr_baths.text) >= 1:
           beds.append(nr_beds.text)
           baths.append(nr_baths.text)

           if price and price.text:
               prices.append(price.text)
           else:
               prices.append('No display data')

           if size and size.text:
               sizes.append(size.text)
           else:
               sizes.append('No display data')

           if address and address.text:
               addresses.append(address.text)
           else:
               addresses.append('No display data')

太好了!我们已经掌握了所有需要的信息,但该把它们存储在哪里呢?这时,pandas 库就派上用场了,它可以帮助我们将数据结构化成一个 csv 文件,供我们将来使用。

df = pd.DataFrame({'Address': addresses, 'Price': prices, 'Beds': beds, 'Baths': baths, 'Sizes': sizes})
df.to_csv('listings.csv', index=False, encoding='utf-8')

如果我们运行代码,就会创建一个名为 "listings.csv"的文件,其中就有我们宝贵的数据!

我们做到了我们创建了自己的网络搜刮工具!现在,让我们直接进入正题,看看我们需要遵循哪些步骤,修改哪些代码行才能使用搜索工具。

使用网络搜索 API

在这种情况下,我们当然要使用WebScrapingAPI

创建免费的 WebScrapingAPI 账户

要使用 WebScrapingAPI,您需要创建一个账户。别担心,前 5000 次 API 调用是免费的,而且您不需要共享任何个人数据,如信用卡信息。成功创建账户并验证电子邮件后,我们就可以进入下一步了。

API 密钥

展示 API 访问密钥、API 测试平台以及与您的应用程序集成的三步入门流程图

要使用 WebScrapingAPI,您需要通过私人 API 密钥进行身份验证,您可以在账户仪表板上找到该密钥。请注意,不要与任何人共享此密钥,如果怀疑密钥已被泄露,可随时按下 "重置 API 密钥 "按钮重置密钥。

修改代码

完美!现在您有了 API 密钥,让我们进行必要的更改。

我们将不再使用 Webdriver。取而代之的是,"请求 "库将向 WebScrapingAPI 发送请求,并获取网站的 HTML 代码作为响应。

import requests
from bs4 import BeautifulSoup
import pandas as pd

接下来,我们必须为请求准备几个参数:我们希望提取数据的网站(房地产经纪人)的 URL 和我们的 API 密钥。

url = "https://api.webscrapingapi.com/v1"
params = {
 "api_key": "XXXXXXX",
 "url": "https://www.realtor.com/realestateandhomes-search/New-York_NY"
}
response = requests.request("GET", url, params=params)

不要忘记更改 beautifulsoup 正在解析的内容。我们将使用从 API 收到的响应,而不是 chromedriver 的源代码。

content = response.text

从现在起,您可以使用与上一方案相同的代码。数据仍将存储在名为 "listings.csv"的 CVS 文件中。

全部完成!

就这样,你就可以运行代码了。WebScrapingAPI 将完成这项工作,您将获得必要的数据,找到理想的住所。但你可能会问自己"使用 WebScrapingAPI 和我们自己创建的 scraper 有什么区别?请允许我解释一下。

DIY 与预制

使用 WebScrapingAPI 的最大优势之一是其代理服务器。该服务拥有一个巨大的旋转代理池,可确保用户在网上冲浪时的匿名性。

当有人想对某个网站进行大规模搜索时,这项功能也会很有帮助。在短时间内对一个网站提出多个请求,肯定会屏蔽你的 IP,认为这是一次恶意尝试或一个怀有不良企图的机器人。

使用旋转代理池会让网站认为有多个用户在与之交互,这样你就不会被发现,可以整天进行搜刮。

在进行网络抓取时,您可能会遇到更多障碍,例如验证码或浏览器指纹识别。正如您所预料的那样,我们构建的 WebScrapingAPI 可以避开所有这些障碍,让您尽可能轻松地提取数据。如果您想了解更多相关信息,请查看我们的文章:网络抓取程序遇到的最常见问题。

一种工具,多种用途

我们都同意,网络搜索是房地产行业的绝佳解决方案,但您也可以将其用于其他目的。以下是几个例子:监控竞争对手、比较产品价格和训练机器学习算法。

我还可以继续说下去,但这已经是一个全新的话题了。我不会把这篇文章永远拖下去,所以我建议你看看网络搜刮工具的七个使用案例。

在空闲时间创建一个网络搜索工具听起来很不错,但有很多事情需要考虑,这些事情会耗费大量的开发时间。在这里,你可以找到关于DIY 与预制网络搜索工具的深入讨论。

如果我们谈论的是扫描几个网页,自己构建工具不失为一种快速的解决方案。不过,专业的工作需要专业的工具,最好是 API,即 WebScrapingAPI。我提到免费试用了吗?

关于作者
罗伯特·蒙切阿努,WebScrapingAPI 全栈开发工程师
罗伯特-蒙恰努全栈开发工程师

罗伯特·蒙塞阿努(Robert Munceanu)是 WebScrapingAPI 的全栈开发工程师,他在产品各领域均有贡献,并协助构建了支持该平台的可靠工具和功能。

开始构建

准备好扩展您的数据收集规模了吗?

加入2,000多家企业,使用WebScrapingAPI在无需任何基础设施开销的情况下,以企业级规模提取网页数据。