在正确的时间获得正确的信息可以为专业人士及其客户带来改变。在房地产领域,准确性有时至关重要,这样的平台就是 Apartments.com。 Apartments.com 拥有大量的房产列表、市场洞察以及数据集中的所有社区详细信息,为购房者、卖家甚至需要获取客户数据的房地产经纪人提供了有用的重要信息。仅在过去三个月内,Apartments.com 的访问量就达到了约 48.7 万次,凸显了其在行业中的受欢迎程度和实用性。

Apartments.com 每月访问量

图片来源

在本博客中,我们将向您展示如何使用 JavaScript 抓取 Apartments.com 以及 Crawlbase 爬取 API。您将学习如何抓取基本的属性数据,例如 房产名称、关于、价格、位置、功能、面积等等 不受任何阻碍或限制.

目录

第 1 步:为 Custom Apartments.com Scraper 设置必要的工具

第 2 步:设置项目

第 3 步:从 Apartments.com 中提取 HTML 数据

第 4 步:抓取 JSON 格式的 Apartments.com

总结

常见问题

第 1 步:为 Custom Apartments.com Scraper 设置必要的工具

在开始编码之前,让我们使用必要的工具设置环境。以下是您开始使用时需要的:

Node.js 允许您在本地运行 JavaScript,这对于执行我们的网页抓取脚本至关重要。您可以从官方网站下载Node.js。由于我们的项目严重依赖 JavaScript,因此掌握变量、函数、循环和基本 DOM 操作等基本概念非常重要。如果您是 JavaScript 新手,Mozilla 开发者网络 (MDN) 或 W3Schools 等资源可能会有所帮助。

在本教程的后面部分,我们将使用 Crawlbase Crawling API 来执行有效的网页抓取。您的 API 令牌将验证请求并启用爬网 API 的功能。通过以下方式获取您的代币 创建一个帐户 在 Crawlbase 网站上并从以下位置访问您的 API 令牌 帐户文件部分.

自定义 Apartments.com 抓取工具的先决条件

第 2 步:设置项目

以下是如何设置您的项目来抓取 Apartments.com 数据:

创建一个新的项目文件夹:
打开您的终端并输入 mkdir apartment-scraper 为您的项目创建一个新文件夹。

1
mkdir 公寓-scraper

导航到项目文件夹:
输入 cd apartment-scraper 移动到新创建的文件夹中。

1
cd 公寓刮刮乐

创建 JavaScript 文件:
类型 touch scraper.js 在项目文件夹中创建一个名为 scraper.js 的新 JavaScript 文件。

1
触摸scraper.js

添加 Crawlbase 包:
通过运行安装 Crawlbase Node 库 npm install crawlbase 在您的终端中。该库有助于连接到 Crawlbase Crawling API 以抓取 Apartments.com 数据。

1
npm 安装爬虫库

安装 Fs、Cheerio:
安装必要的模块 npm install fs cheerio。这些模块支持 Apartments.com scraper 项目的文件系统交互、HTML 解析以及 JSON 到 CSV 转换。

1
npm 安装 fs Cheerio

完成这些步骤后,您就可以构建您的 Apartments.com 数据抓取工具了!

第 3 步:从 Apartments.com 中提取 HTML 数据

Apartments.com 主页

现在您已经安装了 API 凭据和用于网页抓取的 Node.js 库,让我们开始设置“scraper.js”文件。选择您想要从中抓取数据的 Apartments.com 页面 - 让我们重点关注 房屋出租页面 对于这个例子。在“scraper.js”文件中,使用 Node.js 和 fs 库从指定的 Apartments.com 页面提取数据并将其存储在“response.html”文件中。确保将代码中的占位符 URL 替换为您要抓取的实际 URL。

JS代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
常量 { 抓取API } = 要求('crawlbase'),
FS = 要求('fs'),
抓取基础令牌 = 'YOUR_CRAWLBASE_TOKEN',
接口= 抓取API({ 象征:crawlbaseToken }),
公寓页面URL = 'https://www.apartments.com/2630-n-hamlin-ave-chicago-il/kvl7tm9/';

蜜蜂。得到(公寓页面URL)。然后(处理CrawlResponse)。捕捉(处理抓取错误);

功能 处理抓取响应(响应){
if (回复。状态码 === 200){
fs。写文件同步('响应.html', 回复。身体);
领事.日志('HTML 已保存到response.html');
}
}

功能 处理抓取错误(错误){
领事.错误(错误);
}

提供的代码片段使用 Crawlbase 库从 Apartments.com 网页中提取 HTML 内容。该脚本首先使用指定的令牌创建一个 Crawling API 实例,然后向 Apartments.com 页面发送 GET 请求。如果响应成功且状态代码为 200,则会将 HTML 内容保存到名为“response.html”的文件中。如果爬网过程中出现任何错误,脚本会将错误消息记录到控制台。

HTML输出:

抓取 HTML Apartments.com

第 4 步:抓取 JSON 格式的 Apartments.com

在本节中,我们将探讨如何从 Apartments.com 网页中抓取有价值的数据。我们想要抓取的数据包括 房产名称、描述、价格、位置、功能、面积等。为了实现这一目标,我们将使用两个库创建一个 Apartments.com 抓取工具:cheerio(通常用于网页抓取)和 fs(协助文件操作)。该脚本将解析 Apartments.com 页面的 HTML,提取所需的详细信息,并将它们存储在 JSON 数组中。

JS代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
常量 FS = 要求('fs');
常量 欢呼= 要求('cheerio');

// 读取 HTML 文件
常量 html = fs.读取文件同步('响应.html', 'utf-8');

// 将 HTML 内容加载到 Cheerio 中
常量 $ = 快乐。加载(html);

// 使用 Cheerio 选择器提取属性详细信息
常量 属性详细信息 = {};

// 获取属性名称
属性详细信息。姓名 = $('#属性名称').文本()。修剪();

// 获取月租金
属性详细信息。租用 = $('.rentInfoDetail').eq(0).文本()。修剪();

// 获取卧室数量
属性详细信息。卧室 = $('.rentInfoDetail').eq(1).文本()。修剪();

// 获取浴室数量
属性详细信息。浴室 = $('.rentInfoDetail').eq(2).文本()。修剪();

// 获取属性大小
属性详细信息。尺寸 = $('.rentInfoDetail').eq(3).文本()。修剪();

// 获取租赁详细信息并解析为结构化字段
常量 租赁详细信息文本 = $('.detailsTextWrapper').文本()。修剪();
常量 租赁详细信息部分 = 租赁详细信息文本。分裂(',').地图((部分) => 部分。修剪());
常量 租赁详细信息 = {};
租赁详情。租赁期限 = 租赁详细信息部分。发现((部分) => 部分。降低大小写()。包括(‘月租’)) || '';
租赁详情。存款金额 = 租赁详细信息部分。发现((部分) => 部分。降低大小写()。包括('订金')) || '';
租赁详情。可用性 = 租赁详细信息部分。发现((部分) => 部分。降低大小写()。包括('可用的')) || '';
属性详细信息。租约详情 = 租赁详细信息;

// 提取属性位置(地址)
常量 属性地址元素 = $('.propertyAddress');
if (属性地址元素。长度 > 0){
常量 地址组件 = 属性地址元素
.发现('跨度')
.地图((索引、元素) => {
回报 $(元素)。文本()。修剪();
})
.得到();
常量 位置 = 地址组件。加入(',');
属性详细信息。地址 = 位置;
}

// 提取房屋特征(设施)
常量 便利设施部分 = $('#amenitiesSection');
if (设施部分。长度 > 0){
常量 房屋特征=[];
便利设施部分。发现('.combinedAmenitiesList .specInfo 范围').((索引、元素) => {
常量 特征 = $(元素).文本()。修剪();
房屋特点。(特征);
});
属性详细信息。房屋特点 = 房屋特征;
}

// 提取属性描述
常量 描述部分 = $('#descriptionSection');
if (描述部分。长度 > 0){
常量 描述文本 = 描述部分。发现('p:第一个类型').文本()。修剪();
// 将换行符 (\n) 替换为空格
属性详细信息。描述 = 描述文本。更换(/\n/g, '');
}

// 将 propertyDetails 对象转换为 JSON 格式
常量 属性详细信息JSON = JSON.串化(属性详细信息, , 2);

// 将JSON数据输出到终端
领事.日志(属性详细信息JSON);

提供的 JavaScript 代码创建一个自定义的 Apartments.com 抓取工具,它使用 Cheerio 从 HTML 文件中抓取和提取属性详细信息。它解析response.html文件以抓取数据,例如 房产名称、月租、卧室、浴室、面积、租赁详细信息(期限、押金、可用性)、位置(地址)、房屋特色(设施)和描述。该代码利用 Cheerio 选择器来浏览 HTML 结构、提取特定元素和文本内容,并将提取的数据格式化为结构化 JSON 对象。

JSON 输出:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
“名称”: “北哈姆林大道 2630 号”,
“租”: “ $ 2,350”,
“卧室”: “2 卧室”,
“浴室”: “1巴”,
“尺寸”: “1,000 平方英尺”,
「租赁详情」: {
“租赁期限”: “12个月租约”,
“存款金额”: “350押金”,
“可用性”: “现在有空”
},
“地点”: “物业地址:2630 N Hamlin Ave,芝加哥,IL,60647”,
「房屋特色」: [“空调”, “洗碗机”, “地下室”, “洗衣设施”],
“说明”: “位于充满活力的洛根广场的迷人 2 卧室住宅 - 最近经过翻修,在哈姆林大道北 2630 号探索现代生活与邻里魅力的融合。这栋新近翻修的一楼住宅位于经典的芝加哥 2 公寓内,拥有 1,000 平方英尺的现代设计,配有特点: 2 间温馨卧室和 1 间时尚浴室 全新硬木地板,外观时尚 更新电器,增强您的烹饪体验 宽敞的 2 辆车车库 - 每辆车每月额外支付 150 美元 私人后院 - 您的城市庇护所 洗衣房地下室设施便利 允许携带小宠物 租金:2350 美元/月(包括水电费:煤气、水) 水电费阈值:水电费包含在一定阈值内 如果使用量超过此限制,租户将支付超出指定阈值的差额 黄金地段:杂货店:托尼生鲜市场 (Tony's Fresh Market) 距离酒店仅几步之遥,交通:3 分钟内即可到达 Diversey 和 Hamlin 巴士站,步行 12 分钟即可到达希利地铁站 (Healy Metra Station)。蓝线:洛根广场站 (Logan Square Station) 仅需 2 分钟车程,可带您前往芝加哥市中心及周边地区。餐饮: 在 Omarcito's Latin Cafe、L'Patron 和 The Little Pickle 品尝当地风味。夜生活:在 Surge Billiards 享受夜晚的游戏之夜。这个诱人的空间已准备好让您成为自己的空间。联系我们安排看房,开启您在洛根广场的新篇章!”
}

总结

本指南提供了使用 JavaScript 和 Crawlbase 抓取 API 从 Apartments.com 抓取数据的资源和技术。您可以收集各种类型的数据,例如 房产名称、描述、价格、位置、功能、面积等。无论您是网络抓取新手还是有一定经验,这些见解都将帮助您入门。如果您有兴趣从其他网站抓取数据,例如 Zillow的, 雷德芬, Trulia的房地产经纪人,我们还提供额外的指南供您探索。

附加指南:

如何抓取 Craigslist

如何使用 ChatGPT 抓取网站

如何抓取 TikTok

用 Python 抓取维基百科 - 终极教程

如何使用智能代理抓取 Google 新闻

常见问题

你能抓取 Apartments.com 吗?

可以使用 Apartments.com 抓取房地产数据 网页抓取工具 例如爬行基地。 Crawlbase 对于从 Apartments.com 抓取公寓列表、定价和描述非常有用。开发人员可以使用Crawlbase的功能来浏览站点结构、发送HTTP请求以及解析HTML以提取特定的属性详细信息。然而,遵守 Apartments.com 的服务条款并采用符合道德的抓取做法至关重要。负责任地使用 Crawlbase 从 Apartments.com 上抓取各种应用程序的有用信息。

抓取 Apartments.com 是否合法取决于他们的服务条款。一般来说,如果您遵守规则并且不违反网站条款,则可以抓取公寓列表和租金价格等公共数据。但是,出于商业原因或大量抓取可能需要许可。请务必阅读 Apartments.com 的条款,如果您不确定,请考虑法律建议。

我可以从 Apartments.com 抓取哪些数据?

您可以从 Apartments.com 抓取的数据包括 公寓列表、租金价格、房产特征(例如卧室数量、浴室数量、建筑面积、便利设施) 例如停车位情况、健身房设施;位置详细信息,例如街区、城市和州,而联系信息则由房东或物业经理组成。

抓取 Apartments.com 时如何处理验证码?

在抓取 Apartments.com 等网站时处理验证码可能很困难,但使用正确的工具会更容易。 Crawlbase 的 Crawling API 等服务使用智能算法和人工智能来自动解决验证码。这意味着您的抓取工具可以继续顺利工作,而无需您手动解决每个验证码。通过这种自动化,您的抓取过程将保持高效和高效,让您获得所需的数据,而不会陷入验证码困境。

如何防止在抓取 Apartments.com 时被屏蔽?

为了避免在抓取 Apartments.com 时被阻止,请使用 Crawlbase 的 Crawling API 等工具。该服务有助于防止阻塞和 绕过验证码 自动使用先进技术。 Crawlbase还提供 代理管理 和地理定位功能,将请求分散到不同的 IP 地址和位置。

如何格式化和存储从 Apartments.com 抓取的数据?

从 Apartments.com 抓取数据后,您可以使用 JavaScript 等编程语言将其组织为 CSV 或 JSON 格式。将这些格式化数据存储在MySQL或PostgreSQL等数据库中,以便于访问和分析。这种方法确保了有效的数据管理和检索以供将来使用。