又快到了开学季,在荷兰找房子是一件既紧张又耗时的事情,尤其是在荷兰的热门城市,房源更新迅速,由于脚本和中介的泛滥,稍有延迟就可能错过心仪的住所。因此我使用了使用 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 或以上版本,
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 内容,里面会有这样的字段:
"chat": {
"id": 123456789,
"first_name": "YourName",
...
}
这里的 id 就是你的 chat_id
,把它复制下来,粘贴到config.yaml
中的 telegram->chat——id
字段里。
Bark 配置(可选)
Twilio 配置(可选)
测试通知是否正常
接着运行下面命令来测试通知功能是否正常。
python Notifier.py
脚本配置
脚本的核心筛选逻辑写在了 config.yaml 的 scan_settings 和 cities 两个字段中,通过修改它们,可以控制脚本抓取哪些城市的房源、多久抓一次、关注哪些类型的房子。以下是我目前使用的配置,可以根据自己需求调整:
scan_settings:
interval_seconds: 2 # 每隔几秒钟抓取一次数据
basic_rent_limit: 2000 # 基本租金上限,比如只看租金低于 2000 欧的房子
allowance_threshold: 0 # 房补筛选:设为 0 表示所有房源都看,设为 1 表示只看有房补的,或者可以设为具体的房补数字
timezone: "Europe/Amsterdam" # 设置为所在的时区,用于通知时间判断
城市列表如下,脚本会对这些城市进行轮询抓取,具体可以看配置文件:
cities:
"24": "Amsterdam"
"26": "Delft"
"25": "Rotterdam"
# "28": "Den Bosch"
# "29": "Eindhoven"
...
脚本执行
方式1:本地执行
启动脚本
在终端中运行主脚本 main.py:
python H2S.py
脚本将开始定时抓取房源信息,并在发现符合条件的新房源时,通过配置的通知方式发送通知。
方式2:部署到服务器后台运行
也可以将脚本部署到自己的VPS或树莓派上,让它全天24小时运行,以systemd 为例,可以创建以下服务配置文件:
[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,然后运行:
sudo systemctl daemon-reexec
sudo systemctl enable h2s
sudo systemctl start h2s
可以通过以下命令查看运行状态和日志:
sudo systemctl status h2s
journalctl -u h2s -f