Class Scraper

Hierarchy

  • Scraper

Constructors

  • Initialize a new Scraper

    Parameters

    • userAgent: string

      User agent must be a valid W&M email address

    • Optional rateLimit: number

    Returns Scraper

Properties

URL: URL = ...
_lastRequest: number = 0
_rateLimit: number = 500
_userAgent: string

Accessors

  • get rateLimit(): number
  • Returns number

  • set rateLimit(rateLimit: number): void
  • Sets the rate limit in milliseconds.

    Example

    Scraper.rateLimit = 5000 // 5 seconds
    

    Parameters

    • rateLimit: number

      Must be an integer greater than 0

    Returns void

  • get userAgent(): string
  • Returns string

  • set userAgent(userAgent: string): void
  • Sets the user agent.

    Parameters

    • userAgent: string

      Valid W&M email address (regex: ^[a-zA-Z0-9_.+-]+@wm.edu$)

    Returns void

Methods

  • Fetches all courses from the Open Course List.

    Example

    Scraper.all({ term: 202320, concurrency: 10 }) // 74 subjects/10 batches = 7 requests => 7 requests * 500ms rate limit = 3.5 seconds
    

    Parameters

    • Optional term: Pick<Filter, "term">

      Term code to fetch courses from (default: top term in the Open Course List dropdown)

    • concurrency: number = 1

      Number of concurrent requests to make in batches

    Returns Promise<Readonly<Course>[]>

  • Fetches courses from the Open Course List based on the specified filter.

    Parameters

    • Optional filters: Filter

      If no filters are specified, all courses will be returned.

    Returns Promise<Readonly<Course>[]>

  • Parameters

    • req: Promise<Response>

    Returns Promise<any>

  • Extracts all available terms from the Open Course List under the 'term_code' dropdown.

    Returns Promise<number[]>

Generated using TypeDoc