This repo is meant to coalesce different housing resources to aide in searching for housing in Chicago. The aim is to build a dataset of available housing in chicago, then search twice daily for new listings. If a new listing is found, an email is sent to the user. Datasets are kept in the data folder.
- Python >= 3.8
- Found in the requirements.txt file
- ipykernel installs a bunch of crap for me to use with python interative in VSCode.
- Basic libraries are:
- Numpy
- Pandas
- requests
- BeautifulSoup - (I know i know. But its the best way to parse html) -No available json data for any of the housing sites so I had to use the soups.
- In order to use the email functionality, you need to create a dummy account on gmail.
- Once you do, authorize it for 2step authentication.
- Generate an App password for the account
- Store credentials in a text file under a
/secret
folder you'll need to create.
- Main file will run indivdiual sub scripts for each source. (Makes failure tracing easier)
- For each source, pull off relevant info for each listing.
- Makes sure to use info that's common to all sources.
- Store any extra data you find in a text field
- Craigs is the only one you have to load each individual link. As not all their information is stored on the front page.
- After each site / neighborhood retrieval. Score the listings for these traits
- Closest train stop
- Crime score
- Send support email with any new links that aren't saved already.
- - apartments.com
- - craigslist
- - realtor.com
- - redfin
- - zillow
Your terminal should look something like this during runtime. It is a rich live display that shows you the following information.
- Log table of all log messages letting you know whats happening during runtime
- Overall progress timer
- Server naps progress timers (because always be nice to the servers)
- Other information will sometimes pop up here if the program is requesting additional GPS or city crime information
- A total and individual site counters for listings found.
- The border color will change for each counter depending on what information has been found.
${\color{red}Red \space = \space No \space listings \space have \space been \space found.}$ ${\color{green}Green \space = \space a \space new \space listing \space has \space been \space found.}$ ${\color{magenta}Magenta \space = \space A \space listing \space has \space been \space found \space but \space already \space exists \space in \space your \space JSON \space container.}$
Currently the software is set to search the following neighborhoods. These can be adjust by adding/commenting out the AREAS
variable in main.py