Skip to main content

A Python scraper for MaxPreps high school sports data

Project description

MaxPreps Web Scraper

This Python module scrapes high school sports data from MaxPreps.com, enabling efficient extraction of team rankings and game results across states and sports.

Features

  • Retrieve team rankings with strength of schedule, rating, and team links.
  • Scrape team schedules, game outcomes, rankings
  • Includes address/location data for each team.
  • Multi-threaded scraping for speed and efficiency.
  • Cleans and structures game metadata (venue, game type, outcome, etc.).

File Structure

  • scraper.py: Contains the MaxPrepsScraper class

️ Installation

pip install requests beautifulsoup4 pandas tqdm

Functions

get_rankings(state: str, sport: str, year: str, boys: bool = True)

Retrieves state rankings for a given sport and academic year. Parameters:

  • state (str): Two-letter state abbreviation (e.g., 'tx' for Texas)
  • sport (str): Sport name (e.g., 'basketball')
  • year (str): Academic year of the season (e.g., '21-22')
  • boys (bool, optional): Set to True for boys' sports and False for girls'. Defaults to True.

Returns:
pandas.DataFrame containing:

  • School Name
  • State Rank
  • Strength of Schedule (SOS)
  • Team Rating
  • Team URL

get_contests(state: str, sport: str, year: str, boys: bool = True, cities: list = None)

Scrapes all contests (games) for selected schools by state, sport, and year. Parameters:

  • state (str): Two-letter state abbreviation (e.g., 'tx')
  • sport (str): Sport name (e.g., 'basketball')
  • year (str): Academic year of the season (e.g., '21-22')
  • boys (bool, optional): Set to True for boys' sports and False for girls'. Defaults to True.
  • cities (list, optional): A list of cities to filter for, e.g., ['austin', 'el paso'] (if omitted, full state will be scraped)

Returns:
pandas.DataFrame containing game-level contest data, including:

  • Date, opponent, venue, scores
  • Team location details (address, city, state, zipcode)
  • URLs to the MaxPreps pages of both teams

Usage and Example Output

from scraper import MaxPrepsScraper
scraper = MaxPrepsScraper()

# Get Team Rankings
rankings_df = scraper.get_rankings(state = 'de', sport = 'football', year = '23-24')

# Get Contest Data
contests_df = scraper.get_contests(state='tx', sport='basketball', year='21-22', boys=False, cities = ['san antonio'])

#output datframes
rankings_df.head(10)
contests_df.head(10)

Get Rankings Get Contests

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

maxpreps_scraper-0.1.0.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

maxpreps_scraper-0.1.0-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file maxpreps_scraper-0.1.0.tar.gz.

File metadata

  • Download URL: maxpreps_scraper-0.1.0.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.4

File hashes

Hashes for maxpreps_scraper-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4968d581199246fce4ccdc9678aebefe90425b3462c4fcb68fcf44e213688f5a
MD5 e700c464b1ee6e06c2724174356a2cd9
BLAKE2b-256 fe43a306416fb59a62135e073755d116911511d793130e616c876a8a541d8bae

See more details on using hashes here.

File details

Details for the file maxpreps_scraper-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for maxpreps_scraper-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 43a684d1628d0e6215b8e75d2e2861ffe78f2fa28d15652a850729bd088c4401
MD5 e42dabc22e963d6ad348fe8f79c5f943
BLAKE2b-256 c31ba04c4d3cfafecb9c74063371ae7d904bf67f9092d71a2a220f5027b65d41

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page