HuurhuisScraper is een Python-gebaseerde tool die huurwoningvermeldingen scrapt van verschillende websites en deze in een MySQL-database opslaat. De tool verstuurt notificaties via WhatsApp wanneer nieuwe woningen worden gevonden die voldoen aan de ingestelde criteria.
-
Clone de repository naar je lokale machine:
git clone `https://github.com/jelmer-ketelaar/huurhuisscraper.git`
-
Ga naar de directory van het project:
cd huurhuisscraper
-
Installeer de benodigde packages:
pip install -r requirements.txt
Zorg ervoor dat je MySQL op je machine hebt geïnstalleerd of gebruik een externe MySQL-server om de database te hosten.
Je hebt de volgende software nodig om dit project te draaien:
- Python 3.8+: Zorg ervoor dat Python 3.8 of hoger is geïnstalleerd op je systeem.
- pip: Python package manager om benodigde libraries te installeren.
- MySQL (of MariaDB): Voor database opslag van de huurwoningvermeldingen.
- Twilio-account: Voor het versturen van WhatsApp-notificaties.
De volgende pakketten zijn nodig voor dit project en worden automatisch geïnstalleerd via het requirements.txt
bestand:
requests
: Voor HTTP-verzoeken naar websites.beautifulsoup4
: Voor het parsen van HTML-content tijdens het scrapen.fake-useragent
: Voor het dynamisch genereren vanUser-Agent
headers in verzoeken.mysql-connector-python
: Voor MySQL databaseverbindingen.twilio
: Voor het versturen van WhatsApp-notificaties via de Twilio API.python-dotenv
: Voor het beheren van omgevingsvariabelen vanuit een.env
bestand.flake8
: Voor linting en het controleren van de codekwaliteit.pytest
: Voor het uitvoeren van unit tests en andere testscenario's.schedule
: Voor het periodiek plannen en uitvoeren van scraping-taken.Flask~=3.0.3
: Voor het bouwen van webapplicaties.urllib3~=2.2.3
: Voor HTTP-clientfunctionaliteit.Flask-Login~=0.6.3
: Voor gebruikersauthenticatie in Flask-applicaties.
- Maak een .env-bestand in de root van het project en voeg de volgende omgevingsvariabelen toe:
TWILIO_AUTH_TOKEN=your_twilio_auth_token
MY_PHONE_NUMBER=your_phone_number
- Maak de MySQL-database aan voor het opslaan van de huurwoninggegevens:
CREATE DATABASE huurwoningen;
USE huurwoningen;
CREATE TABLE rental_listings (
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255),
price INT,
location VARCHAR(255),
link TEXT,
source VARCHAR(255),
notified BOOLEAN DEFAULT FALSE
);
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(255) UNIQUE,
password_hash VARCHAR(255)
);
CREATE TABLE filters (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
city VARCHAR(255),
rent_min INT,
rent_max INT,
FOREIGN KEY (user_id) REFERENCES users(id)
);
- Start de scraper handmatig of stel een scheduler in om het regelmatig te laten draaien:
python main.py
- De scraper zoekt naar huurwoningen op basis van de configuratie in de database en stuurt notificaties via WhatsApp zodra er nieuwe woningen zijn gevonden.
- Web scraping: Scrapt huurwoningvermeldingen van meerdere websites.
- Locatievalidatie: Verifieert of de gevonden woning zich in een specifieke stad bevindt (bijvoorbeeld Dordrecht).
- Database-opslag: Slaat de gescrapete woningvermeldingen op in een MySQL-database voor verdere verwerking.
- WhatsApp-notificaties: Stuurt automatisch een WhatsApp-bericht via Twilio wanneer er nieuwe woningen voldoen aan de ingestelde criteria.
- Ondersteuning voor meer websites om huurwoningen van te scrapen.
- Uitbreidbare en flexibele filters voor nauwkeurigere zoekopdrachten.
- Automatisering via cron jobs of een andere taakplanner.
- Een gebruiksvriendelijke webinterface voor het beheren van zoekopdrachten en resultaten.