Skip to content

「工具」使用 Python 对 Holland2Stay 进行房源检测

Published at:

又快到了开学季,在荷兰找房子是一件既紧张又耗时的事情,尤其是在荷兰的热门城市,房源更新迅速,由于脚本和中介的泛滥,稍有延迟就可能错过心仪的住所。因此我使用了使用 Python 脚本实时监控 Holland2Stay 网站上的房源更新,并通过 Telegram、Bark、Twilio 三种方式第一时间将信息推送到我的手机上。

项目链接:https://github.com/CalebChen768/h2s_housing#

感谢:https://github.com/Yukyung-choi/h2s-housing-detection

这个脚本主要实现了以下功能:

  • 实时抓取:定时从 Holland2Stay 网站获取最新的房源信息。
  • 条件筛选:根据设定的租金上限和是否有房补等条件筛选房源。
  • 多渠道通知:通过 Telegram、Bark(iOS)、Twilio(短信)等方式发送通知。
  • 健康检查:每天早晚定时发送系统运行状态通知,在一小时内报错次数超过十次时,进行报警推送。

环境准备

Python 配置

确保 Python 环境为 3.10 或以上版本,

bash
pip install -r requirements.txt

Telegram bot 配置

创建 Bot

在 Telegram 中搜索 @BotFather,这是官方提供的 Bot 创建工具。

  • 向它发送 /start 开始交互
  • 然后发送 /newbot 创建新机器人
  • 根据提示以此为 bot 命名和设置用户名(必须以 bot 结尾,xxxx_bot)

这时 BotFather 会返回一段字符串,这就是访问的 Token,请将 Token 复制到项目的 config.yaml 中的 telegram->token 字段里。

Use this token to access the HTTP API:
abcdefgxxxxxxxxxxxxxx
Keep your token secure and store it safely, it can be used by anyone to control your bot.

获取 Chat ID

在 Telegram 主页的搜索栏搜索刚刚的用户名 xxxx_bot,打开对话框,向它随意发送一段消息,然后打开浏览器访问以下这个链接(将 TOKEN 替换成你自己的 token):

https://api.telegram.org/bot<TOKEN>/getUpdates

比如

https://api.telegram.org/botabcdefgxxxxxxxxxxxxxx/getUpdates

你会看到一段 JSON 内容,里面会有这样的字段:

json
"chat": {
  "id": 123456789,
  "first_name": "YourName",
  ...
}

这里的 id 就是你的 chat_id,把它复制下来,粘贴到config.yaml 中的 telegram->chat——id 字段里。

Bark 配置(可选)

Twilio 配置(可选)

测试通知是否正常

接着运行下面命令来测试通知功能是否正常。

bash
python Notifier.py

脚本配置

脚本的核心筛选逻辑写在了 config.yaml 的 scan_settings 和 cities 两个字段中,通过修改它们,可以控制脚本抓取哪些城市的房源、多久抓一次、关注哪些类型的房子。以下是我目前使用的配置,可以根据自己需求调整:

yaml
scan_settings:
  interval_seconds: 2          # 每隔几秒钟抓取一次数据
  basic_rent_limit: 2000       # 基本租金上限,比如只看租金低于 2000 欧的房子
  allowance_threshold: 0       # 房补筛选:设为 0 表示所有房源都看,设为 1 表示只看有房补的,或者可以设为具体的房补数字
  timezone: "Europe/Amsterdam" # 设置为所在的时区,用于通知时间判断

城市列表如下,脚本会对这些城市进行轮询抓取,具体可以看配置文件:

yaml
cities:
  "24": "Amsterdam"
  "26": "Delft"
  "25": "Rotterdam"
  # "28": "Den Bosch"
  # "29": "Eindhoven"
  ...

脚本执行

方式1:本地执行

启动脚本

在终端中运行主脚本 main.py:

python
python H2S.py

脚本将开始定时抓取房源信息,并在发现符合条件的新房源时,通过配置的通知方式发送通知。

方式2:部署到服务器后台运行

也可以将脚本部署到自己的VPS或树莓派上,让它全天24小时运行,以systemd 为例,可以创建以下服务配置文件:

ini
[Unit]
Description=H2S Python Service
After=network.target

[Service]

WorkingDirectory=/home/h2s-housing # 换成实际地址

ExecStart=/usr/bin/python3 /home/h2s-housing/H2S.py # 换成实际地址

Type=simple

Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target

将这段内容保存为 /etc/systemd/system/h2s.service,然后运行:

bash
sudo systemctl daemon-reexec
sudo systemctl enable h2s
sudo systemctl start h2s

可以通过以下命令查看运行状态和日志:

bash
sudo systemctl status h2s
journalctl -u h2s -f