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

Apartments.com 每月访问量

图片来源

在本博客中,我们将向您展示如何使用 JavaScript 抓取 Apartments.com 以及 爬虫库 Crawling 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 令牌将验证请求并启用 Crawling 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)。捕捉(处理抓取错误);

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

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

提供的代码片段使用 Crawlbase 库从 Apartments.com 网页中提取 HTML 内容。脚本首先创建一个 Crawling API 实例带有指定的 token,然后向 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 从 Apartments.com 抓取数据的资源和技术 Crawling API。您可以收集各种类型的数据,例如 房产名称、描述、价格、位置、功能、面积等。无论您是网络抓取新手还是有一定经验,这些见解都将帮助您入门。如果您有兴趣从其他网站抓取数据,例如 Zillow的, 雷德芬, Trulia的房地产经纪人,我们还提供额外的指南供您探索。

附加指南:

如何抓取 Craigslist

如何使用 ChatGPT 抓取网站

如何抓取 TikTok

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

如何使用 Smart Proxy

常见问题

你能抓取 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 等网站时处理 CAPTCHA 可能很困难,但使用正确的工具会更容易。Crawlbase 等服务 Crawling API 使用智能算法和人工智能自动解决 CAPTCHA。这意味着您的抓取工具可以继续顺利运行,而无需您手动解决每个 CAPTCHA。通过这种自动化,您的抓取过程将保持高效和高效,让您获得所需的数据,而不会被 CAPTCHA 卡住。

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

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

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

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