Skip to content

Commit

Permalink
- redfin finished
Browse files Browse the repository at this point in the history
  • Loading branch information
ZacharyHampton committed Sep 15, 2023
1 parent 469b703 commit 8107103
Show file tree
Hide file tree
Showing 2 changed files with 41 additions and 2 deletions.
31 changes: 29 additions & 2 deletions homeharvest/core/scrapers/redfin/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import json
from ..types import Home, Address
from .. import Scraper
from typing import Any


class RedfinScraper(Scraper):
Expand All @@ -19,8 +20,34 @@ def handle_location(self):
return response_json['payload']['sections'][0]['rows'][0].split('_')[1]

@staticmethod
def parse_home(home) -> Home:
...
def parse_home(home: dict) -> Home:
address = Address(
address_one=home['streetLine']['value'],
city=home['city'],
state=home['state'],
zip_code=home['zip']
)

url = 'https://www.redfin.com{}'.format(home['url'])

def get_value(key: str) -> Any | None:
if key in home and 'value' in home[key]:
return home[key]['value']

return Home(
address=address,
url=url,
beds=home['beds'] if 'beds' in home else None,
baths=home['baths'] if 'baths' in home else None,
stories=home['stories'] if 'stories' in home else None,
agent_name=get_value('listingAgent'),
description=home['listingRemarks'] if 'listingRemarks' in home else None,
year_built=get_value('yearBuilt'),
square_feet=get_value('sqFt'),
price_per_square_foot=get_value('pricePerSqFt'),
price=get_value('price'),
mls_id=get_value('mlsId')
)

def search(self):
region_id = self.handle_location()
Expand Down
12 changes: 12 additions & 0 deletions homeharvest/core/scrapers/types.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,15 @@ class Address:
@dataclass
class Home:
address: Address
url: str

beds: int | None = None
baths: int | None = None
stories: int | None = None
agent_name: str | None = None
description: str | None = None
year_built: int | None = None
square_feet: int | None = None
price_per_square_foot: int | None = None
price: int | None = None
mls_id: str | None = None

0 comments on commit 8107103

Please sign in to comment.