JobSpy/src/jobspy/scrapers/__init__.py

52 lines
1.2 KiB
Python
Raw Normal View History

from __future__ import annotations
2024-04-30 10:03:10 -07:00
from abc import ABC, abstractmethod
2024-02-14 14:04:23 -08:00
from ..jobs import (
Enum,
BaseModel,
JobType,
JobResponse,
Country,
DescriptionFormat,
2024-02-14 14:04:23 -08:00
)
2023-07-06 17:12:01 -07:00
class Site(Enum):
LINKEDIN = "linkedin"
INDEED = "indeed"
ZIP_RECRUITER = "zip_recruiter"
2023-10-30 17:57:36 -07:00
GLASSDOOR = "glassdoor"
2023-07-06 17:12:01 -07:00
class SalarySource(Enum):
DIRECT_DATA = "direct_data"
DESCRIPTION = "description"
2023-07-06 17:12:01 -07:00
class ScraperInput(BaseModel):
site_type: list[Site]
search_term: str | None = None
2023-07-11 03:42:20 -07:00
location: str | None = None
country: Country | None = Country.USA
distance: int | None = None
2023-07-11 03:42:20 -07:00
is_remote: bool = False
job_type: JobType | None = None
easy_apply: bool | None = None
offset: int = 0
2024-02-14 14:04:23 -08:00
linkedin_fetch_description: bool = False
linkedin_company_ids: list[int] | None = None
2024-02-14 14:04:23 -08:00
description_format: DescriptionFormat | None = DescriptionFormat.MARKDOWN
2023-07-10 16:04:44 -07:00
results_wanted: int = 15
hours_old: int | None = None
2023-07-06 17:12:01 -07:00
2024-04-30 10:03:10 -07:00
class Scraper(ABC):
def __init__(self, site: Site, proxies: list[str] | None = None, ca_cert: str | None = None):
2023-07-06 17:12:01 -07:00
self.site = site
self.proxies = proxies
self.ca_cert = ca_cert
2023-07-06 17:12:01 -07:00
2024-04-30 10:03:10 -07:00
@abstractmethod
def scrape(self, scraper_input: ScraperInput) -> JobResponse: ...