hs-scraper-toolkit


Namehs-scraper-toolkit JSON
Version 1.1.0 PyPI version JSON
download
home_pageNone
SummaryA comprehensive toolkit for scraping high school data with school-specific modules
upload_time2025-07-22 15:45:25
maintainerNone
docs_urlNone
authorNone
requires_python>=3.7
licenseNone
keywords scraping sports high school athletics maxpreps athletic.net track field cross-country school-specific schedule events northside
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # hs-scraper-toolkit

[![PyPI version](https://badge.fury.io/py/hs-scraper-toolkit.svg)](https://badge.fury.io/py/hs-scraper-toolkit)
[![Python 3.7+](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

A comprehensive toolkit for scraping high school sports data from various athletic websites including MaxPreps and Athletic.net.

## Features

- **MaxPreps Roster Scraping**: Extract detailed roster information including player names, numbers, positions, grades, and more
- **Athletic.net Track & Field Data**: Scrape athlete rosters and event schedules for track & field and cross country
- **School-Specific Modules**: Pre-built scrapers for specific schools (Northside College Prep and more)
- **Flexible Filtering**: Filter data by sport, gender, season, and competition level
- **Easy Integration**: Simple Python classes with pandas DataFrame outputs
- **Extensible Design**: Framework for building custom school-specific scrapers
- **Production Ready**: Publicly available on PyPI with proper packaging

## Installation

The package is available on PyPI and can be installed with pip:

```bash
# Install from PyPI (recommended)
pip install hs-scraper-toolkit

# Install with development dependencies
pip install "hs-scraper-toolkit[dev]"

# Install from source (for development)
git clone https://github.com/NCP-Stampede/hs-scraper-toolkit.git
cd hs-scraper-toolkit
pip install -e ".[dev]"
```

## Dependencies

- `beautifulsoup4>=4.9.0` - HTML parsing
- `requests>=2.25.0` - HTTP requests
- `pandas>=1.3.0` - Data manipulation
- `selenium>=4.0.0` - Web automation (for Athletic.net)

## Quick Start

### Simple Import

```python
# Easy import from the main package
from hs_scraper_toolkit import AthleticNetTrackField, MaxPrepRoster

# Or import from specific modules
from hs_scraper_toolkit.Athletics.MaxPrepRoster import MaxPrepRoster
from hs_scraper_toolkit.Athletics.AthleticNetTrackField import AthleticNetTrackField

# School-specific modules
from hs_scraper_toolkit.Northside.AthleticsSchedule import AthleticsSchedule
from hs_scraper_toolkit.Northside.GeneralEvent import GeneralEvent
```

### MaxPreps Roster Scraping

```python
from hs_scraper_toolkit import MaxPrepRoster

# Initialize scraper with team URL
scraper = MaxPrepRoster("https://www.maxpreps.com/il/chicago/northside-mustangs")

# Scrape all available sports
roster_data = scraper.scrape()

# Filter by specific criteria
basketball_data = scraper.scrape(
    sports=['basketball'],
    genders=['boys'],
    seasons=['winter'],
    levels=['varsity']
)

print(f"Found {len(roster_data)} athletes")
print(roster_data.head())
```

### Athletic.net Track & Field Scraping

```python
from hs_scraper_toolkit import AthleticNetTrackField

# Initialize scraper with team URL
scraper = AthleticNetTrackField("https://www.athletic.net/team/19718")

# Scrape athlete rosters
athletes = scraper.scrape_athletes(['cross-country', 'track-and-field-outdoor'])

# Scrape event schedules
events = scraper.scrape_events(['cross-country'], [2024, 2025])

print(f"Found {len(athletes)} athletes")
print(f"Found {len(events)} events")
```

## School-Specific Modules

### Northside College Prep

The toolkit includes pre-built scrapers for Northside College Prep's specific websites:

#### Athletics Schedule Scraping

```python
from hs_scraper_toolkit.Northside.AthleticsSchedule import AthleticsSchedule

# Initialize scraper
scraper = AthleticsSchedule()

# Scrape athletics schedule (uses Selenium for dynamic content)
schedule_data = scraper.scrape()

print(f"Found {len(schedule_data)} scheduled events")
print(schedule_data[['date', 'sport', 'opponent', 'location']].head())
```

#### General School Events

```python
from hs_scraper_toolkit.Northside.GeneralEvent import GeneralEvent

# Initialize scraper (default: all months, 2025-2026)
scraper = GeneralEvent()

# Or specify custom date ranges
scraper = GeneralEvent(
    months=range(1, 7),  # January through June
    years=range(2025, 2026)  # 2025 only
)

# Scrape school events
events_data = scraper.scrape()

print(f"Found {len(events_data)} school events")
print(events_data.head())
```

**Note**: The Athletics Schedule scraper requires ChromeDriver to be installed and accessible in your system PATH.

For detailed documentation on school-specific modules, see [docs/northside-modules.md](docs/northside-modules.md).

## Athletics Module

### MaxPrepRoster

Scrapes roster data from MaxPreps team pages.

**Supported Data:**
- Athlete names and jersey numbers
- Sports, seasons, and competition levels
- Player positions and grade levels
- Gender categories

**Supported Sports:** All sports available on MaxPreps (basketball, football, soccer, etc.)

### AthleticNetTrackField

Scrapes track & field and cross country data from Athletic.net using Selenium WebDriver.

**Supported Data:**
- Athlete rosters with names and gender
- Event schedules with dates and locations
- Meet information and venues

**Supported Sports:**
- Cross Country (`cross-country`)
- Outdoor Track & Field (`track-and-field-outdoor`) 
- Indoor Track & Field (`track-and-field-indoor`)

**Requirements:**
- ChromeDriver must be installed and accessible in PATH for Selenium WebDriver
- Stable internet connection (scraping may take several minutes for large datasets)
- Python 3.7 or higher

## Package Information

- **Version**: 1.0.1
- **Author**: Tanmay Garg
- **License**: MIT
- **PyPI**: [hs-scraper-toolkit](https://pypi.org/project/hs-scraper-toolkit/)
- **Repository**: [GitHub](https://github.com/NCP-Stampede/hs-scraper-toolkit)

## Data Output

Both scrapers return pandas DataFrames with standardized column structures:

### Athlete Data Columns
- `name`: Athlete name
- `number`: Jersey number (0 for Athletic.net)
- `sport`: Sport type
- `season`: Season (fall/winter/spring)
- `level`: Competition level (varsity/jv/freshman)
- `gender`: Gender (boys/girls)
- `grade`: Grade level (9/10/11/12 or N/A)
- `position`: Player position (N/A for track/field)

### Event Data Columns (Athletic.net only)
- `name`: Event/meet name
- `date`: Event date
- `time`: Event time
- `gender`: Gender category
- `sport`: Sport type
- `level`: Competition level
- `opponent`: Opposing teams
- `location`: Event venue
- `home`: Home event indicator

## Examples

See the `example/main.py` file for comprehensive usage examples.

## Contributing

We welcome contributions! This project especially encourages developers to contribute scrapers for their own school's websites.

### Contributing School-Specific Scrapers

**We want YOUR school's scrapers!** If you've built a scraper for your high school's athletics website, calendar system, or any other school-specific platform, we'd love to include it in the toolkit.

#### Why Contribute Your School's Scrapers?

- **Help Other Schools**: Your implementation can serve as a template for similar school websites
- **Build Your Portfolio**: Get your code featured in a public package used by others
- **Learn Best Practices**: Collaborate with other developers and improve your scraping skills
- **Give Back**: Help build a comprehensive toolkit for the high school sports community

#### How to Contribute a School-Specific Scraper

1. **Create Your Module Structure**
   ```
   hs_scraper_toolkit/
   └── YourSchoolName/
       ├── __init__.py
       ├── AthleticsSchedule.py
       ├── EventCalendar.py
       └── RosterData.py (optional)
   ```

2. **Follow the Established Patterns**
   - Use pandas DataFrames for all output data
   - Implement proper error handling and logging
   - Include comprehensive docstrings and type hints
   - Use consistent naming conventions (see existing modules)
   - Handle dynamic content with appropriate tools (Selenium for JS, requests for static)

3. **Include Documentation**
   - Create a detailed README for your school's modules
   - Document all available methods and data structures
   - Provide usage examples and common troubleshooting tips
   - List any special requirements (ChromeDriver, API keys, etc.)

4. **Example Implementation Structure**
   ```python
   import pandas as pd
   from selenium import webdriver
   # or from requests import get

   class YourSchoolAthleticsSchedule:
       def __init__(self):
           self.schedule = pd.DataFrame(columns=["date", "time", "sport", "opponent", "location"])
       
       def scrape(self):
           # Your scraping logic here
           return self.schedule
   ```

#### Schools We'd Love to See

- **Public School Districts**: CPS, NYC DOE, LAUSD, and other major districts
- **Private Schools**: Independent schools with unique website structures  
- **Charter Schools**: KIPP, Success Academy, and other charter networks
- **Specialized Schools**: Magnet schools, art schools, STEM academies
- **Regional Powerhouses**: Schools known for specific sports or academics

#### What to Include in Your Contribution

- **Multiple Data Types**: Athletics, academics, general events, announcements
- **Robust Scraping**: Handle pagination, dynamic loading, authentication if needed
- **Data Standardization**: Follow existing column naming conventions
- **Error Handling**: Graceful failures with informative error messages
- **Documentation**: Clear examples and troubleshooting guides

### General Contribution Guidelines

1. Fork the repository on GitHub
2. Clone your fork locally: `git clone https://github.com/YOUR-USERNAME/hs-scraper-toolkit.git`
3. Create a feature branch: `git checkout -b add-[school-name]-scrapers`
4. Install development dependencies: `pip install -e ".[dev]"`
5. **Add your school's directory and modules**
6. **Update documentation and README**
7. Run tests and ensure code quality
8. Commit your changes: `git commit -m "Add [School Name] scrapers"`
9. Push to your fork: `git push origin add-[school-name]-scrapers`
10. Submit a pull request with detailed description

### Development Setup

```bash
# Clone the repository
git clone https://github.com/NCP-Stampede/hs-scraper-toolkit.git
cd hs-scraper-toolkit

# Install in development mode with dev dependencies
pip install -e ".[dev]"

# Run tests (when available)
pytest

# Format code
black .

# Lint code
flake8 .
```

### Questions About Contributing?

- **Check existing issues** for school requests or similar implementations
- **Open a discussion** on GitHub to propose your school before starting
- **Look at the Northside modules** (`hs_scraper_toolkit/Northside/`) as examples
- **Ask questions** in GitHub Issues or Discussions - we're here to help!

We're excited to see scrapers for schools across the country. Every contribution helps build a more comprehensive toolkit for the high school community!

## Changelog

### Version 1.0.1 (Latest)
- Fixed package structure for proper PyPI distribution
- Added easy import from main package (`from hs_scraper_toolkit import ...`)
- Improved documentation and examples
- Added comprehensive .gitignore
- Published to PyPI

### Version 1.0.0
- Initial release
- MaxPreps roster scraping
- Athletic.net track & field scraping
- Basic package structure

## Support

- **Issues**: Report bugs or request features on [GitHub Issues](https://github.com/NCP-Stampede/hs-scraper-toolkit/issues)
- **Discussions**: Ask questions or discuss usage on [GitHub Discussions](https://github.com/NCP-Stampede/hs-scraper-toolkit/discussions)
- **PyPI**: Visit the [PyPI package page](https://pypi.org/project/hs-scraper-toolkit/)
- **Contributing Schools**: See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines on adding your school's scrapers

## School Contributions Wanted! 🏫

We're actively seeking contributors to add scrapers for their high school websites! Whether your school uses:

- **Custom athletics platforms** (TeamUp, SportsEngine, etc.)
- **District-wide systems** (CPS, NYC DOE, LAUSD)
- **School-specific websites** with unique structures
- **Regional athletics associations** 

Your contribution can help students, parents, and developers across the country access their school data programmatically.

**Current School Modules:**
- ✅ **Northside College Prep** (Chicago, IL) - Athletics Schedule & General Events

**Schools We'd Love to See:**
- 🎯 **Lane Tech College Prep** (Chicago, IL)
- 🎯 **Whitney Young Magnet** (Chicago, IL) 
- 🎯 **Walter Payton College Prep** (Chicago, IL)
- 🎯 **Lincoln Park High School** (Chicago, IL)
- 🎯 **Your School Here!**

See our [detailed contribution guide](CONTRIBUTING.md) for step-by-step instructions on adding your school's scrapers.

## Disclaimer

This tool is for educational and research purposes. Please respect the terms of service of the websites you scrape and implement appropriate rate limiting and ethical scraping practices.

## License

MIT License - see [LICENSE](LICENSE) file for details.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "hs-scraper-toolkit",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.7",
    "maintainer_email": null,
    "keywords": "scraping, sports, high school, athletics, maxpreps, athletic.net, track, field, cross-country, school-specific, schedule, events, northside",
    "author": null,
    "author_email": "Tanmay Garg <stampede.ncp@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/39/3f/b5dd3ec8062fb6dab81c7b08ce48a20d3bfe900d6be08f72b25792b81950/hs_scraper_toolkit-1.1.0.tar.gz",
    "platform": null,
    "description": "# hs-scraper-toolkit\n\n[![PyPI version](https://badge.fury.io/py/hs-scraper-toolkit.svg)](https://badge.fury.io/py/hs-scraper-toolkit)\n[![Python 3.7+](https://img.shields.io/badge/python-3.7+-blue.svg)](https://www.python.org/downloads/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA comprehensive toolkit for scraping high school sports data from various athletic websites including MaxPreps and Athletic.net.\n\n## Features\n\n- **MaxPreps Roster Scraping**: Extract detailed roster information including player names, numbers, positions, grades, and more\n- **Athletic.net Track & Field Data**: Scrape athlete rosters and event schedules for track & field and cross country\n- **School-Specific Modules**: Pre-built scrapers for specific schools (Northside College Prep and more)\n- **Flexible Filtering**: Filter data by sport, gender, season, and competition level\n- **Easy Integration**: Simple Python classes with pandas DataFrame outputs\n- **Extensible Design**: Framework for building custom school-specific scrapers\n- **Production Ready**: Publicly available on PyPI with proper packaging\n\n## Installation\n\nThe package is available on PyPI and can be installed with pip:\n\n```bash\n# Install from PyPI (recommended)\npip install hs-scraper-toolkit\n\n# Install with development dependencies\npip install \"hs-scraper-toolkit[dev]\"\n\n# Install from source (for development)\ngit clone https://github.com/NCP-Stampede/hs-scraper-toolkit.git\ncd hs-scraper-toolkit\npip install -e \".[dev]\"\n```\n\n## Dependencies\n\n- `beautifulsoup4>=4.9.0` - HTML parsing\n- `requests>=2.25.0` - HTTP requests\n- `pandas>=1.3.0` - Data manipulation\n- `selenium>=4.0.0` - Web automation (for Athletic.net)\n\n## Quick Start\n\n### Simple Import\n\n```python\n# Easy import from the main package\nfrom hs_scraper_toolkit import AthleticNetTrackField, MaxPrepRoster\n\n# Or import from specific modules\nfrom hs_scraper_toolkit.Athletics.MaxPrepRoster import MaxPrepRoster\nfrom hs_scraper_toolkit.Athletics.AthleticNetTrackField import AthleticNetTrackField\n\n# School-specific modules\nfrom hs_scraper_toolkit.Northside.AthleticsSchedule import AthleticsSchedule\nfrom hs_scraper_toolkit.Northside.GeneralEvent import GeneralEvent\n```\n\n### MaxPreps Roster Scraping\n\n```python\nfrom hs_scraper_toolkit import MaxPrepRoster\n\n# Initialize scraper with team URL\nscraper = MaxPrepRoster(\"https://www.maxpreps.com/il/chicago/northside-mustangs\")\n\n# Scrape all available sports\nroster_data = scraper.scrape()\n\n# Filter by specific criteria\nbasketball_data = scraper.scrape(\n    sports=['basketball'],\n    genders=['boys'],\n    seasons=['winter'],\n    levels=['varsity']\n)\n\nprint(f\"Found {len(roster_data)} athletes\")\nprint(roster_data.head())\n```\n\n### Athletic.net Track & Field Scraping\n\n```python\nfrom hs_scraper_toolkit import AthleticNetTrackField\n\n# Initialize scraper with team URL\nscraper = AthleticNetTrackField(\"https://www.athletic.net/team/19718\")\n\n# Scrape athlete rosters\nathletes = scraper.scrape_athletes(['cross-country', 'track-and-field-outdoor'])\n\n# Scrape event schedules\nevents = scraper.scrape_events(['cross-country'], [2024, 2025])\n\nprint(f\"Found {len(athletes)} athletes\")\nprint(f\"Found {len(events)} events\")\n```\n\n## School-Specific Modules\n\n### Northside College Prep\n\nThe toolkit includes pre-built scrapers for Northside College Prep's specific websites:\n\n#### Athletics Schedule Scraping\n\n```python\nfrom hs_scraper_toolkit.Northside.AthleticsSchedule import AthleticsSchedule\n\n# Initialize scraper\nscraper = AthleticsSchedule()\n\n# Scrape athletics schedule (uses Selenium for dynamic content)\nschedule_data = scraper.scrape()\n\nprint(f\"Found {len(schedule_data)} scheduled events\")\nprint(schedule_data[['date', 'sport', 'opponent', 'location']].head())\n```\n\n#### General School Events\n\n```python\nfrom hs_scraper_toolkit.Northside.GeneralEvent import GeneralEvent\n\n# Initialize scraper (default: all months, 2025-2026)\nscraper = GeneralEvent()\n\n# Or specify custom date ranges\nscraper = GeneralEvent(\n    months=range(1, 7),  # January through June\n    years=range(2025, 2026)  # 2025 only\n)\n\n# Scrape school events\nevents_data = scraper.scrape()\n\nprint(f\"Found {len(events_data)} school events\")\nprint(events_data.head())\n```\n\n**Note**: The Athletics Schedule scraper requires ChromeDriver to be installed and accessible in your system PATH.\n\nFor detailed documentation on school-specific modules, see [docs/northside-modules.md](docs/northside-modules.md).\n\n## Athletics Module\n\n### MaxPrepRoster\n\nScrapes roster data from MaxPreps team pages.\n\n**Supported Data:**\n- Athlete names and jersey numbers\n- Sports, seasons, and competition levels\n- Player positions and grade levels\n- Gender categories\n\n**Supported Sports:** All sports available on MaxPreps (basketball, football, soccer, etc.)\n\n### AthleticNetTrackField\n\nScrapes track & field and cross country data from Athletic.net using Selenium WebDriver.\n\n**Supported Data:**\n- Athlete rosters with names and gender\n- Event schedules with dates and locations\n- Meet information and venues\n\n**Supported Sports:**\n- Cross Country (`cross-country`)\n- Outdoor Track & Field (`track-and-field-outdoor`) \n- Indoor Track & Field (`track-and-field-indoor`)\n\n**Requirements:**\n- ChromeDriver must be installed and accessible in PATH for Selenium WebDriver\n- Stable internet connection (scraping may take several minutes for large datasets)\n- Python 3.7 or higher\n\n## Package Information\n\n- **Version**: 1.0.1\n- **Author**: Tanmay Garg\n- **License**: MIT\n- **PyPI**: [hs-scraper-toolkit](https://pypi.org/project/hs-scraper-toolkit/)\n- **Repository**: [GitHub](https://github.com/NCP-Stampede/hs-scraper-toolkit)\n\n## Data Output\n\nBoth scrapers return pandas DataFrames with standardized column structures:\n\n### Athlete Data Columns\n- `name`: Athlete name\n- `number`: Jersey number (0 for Athletic.net)\n- `sport`: Sport type\n- `season`: Season (fall/winter/spring)\n- `level`: Competition level (varsity/jv/freshman)\n- `gender`: Gender (boys/girls)\n- `grade`: Grade level (9/10/11/12 or N/A)\n- `position`: Player position (N/A for track/field)\n\n### Event Data Columns (Athletic.net only)\n- `name`: Event/meet name\n- `date`: Event date\n- `time`: Event time\n- `gender`: Gender category\n- `sport`: Sport type\n- `level`: Competition level\n- `opponent`: Opposing teams\n- `location`: Event venue\n- `home`: Home event indicator\n\n## Examples\n\nSee the `example/main.py` file for comprehensive usage examples.\n\n## Contributing\n\nWe welcome contributions! This project especially encourages developers to contribute scrapers for their own school's websites.\n\n### Contributing School-Specific Scrapers\n\n**We want YOUR school's scrapers!** If you've built a scraper for your high school's athletics website, calendar system, or any other school-specific platform, we'd love to include it in the toolkit.\n\n#### Why Contribute Your School's Scrapers?\n\n- **Help Other Schools**: Your implementation can serve as a template for similar school websites\n- **Build Your Portfolio**: Get your code featured in a public package used by others\n- **Learn Best Practices**: Collaborate with other developers and improve your scraping skills\n- **Give Back**: Help build a comprehensive toolkit for the high school sports community\n\n#### How to Contribute a School-Specific Scraper\n\n1. **Create Your Module Structure**\n   ```\n   hs_scraper_toolkit/\n   \u2514\u2500\u2500 YourSchoolName/\n       \u251c\u2500\u2500 __init__.py\n       \u251c\u2500\u2500 AthleticsSchedule.py\n       \u251c\u2500\u2500 EventCalendar.py\n       \u2514\u2500\u2500 RosterData.py (optional)\n   ```\n\n2. **Follow the Established Patterns**\n   - Use pandas DataFrames for all output data\n   - Implement proper error handling and logging\n   - Include comprehensive docstrings and type hints\n   - Use consistent naming conventions (see existing modules)\n   - Handle dynamic content with appropriate tools (Selenium for JS, requests for static)\n\n3. **Include Documentation**\n   - Create a detailed README for your school's modules\n   - Document all available methods and data structures\n   - Provide usage examples and common troubleshooting tips\n   - List any special requirements (ChromeDriver, API keys, etc.)\n\n4. **Example Implementation Structure**\n   ```python\n   import pandas as pd\n   from selenium import webdriver\n   # or from requests import get\n\n   class YourSchoolAthleticsSchedule:\n       def __init__(self):\n           self.schedule = pd.DataFrame(columns=[\"date\", \"time\", \"sport\", \"opponent\", \"location\"])\n       \n       def scrape(self):\n           # Your scraping logic here\n           return self.schedule\n   ```\n\n#### Schools We'd Love to See\n\n- **Public School Districts**: CPS, NYC DOE, LAUSD, and other major districts\n- **Private Schools**: Independent schools with unique website structures  \n- **Charter Schools**: KIPP, Success Academy, and other charter networks\n- **Specialized Schools**: Magnet schools, art schools, STEM academies\n- **Regional Powerhouses**: Schools known for specific sports or academics\n\n#### What to Include in Your Contribution\n\n- **Multiple Data Types**: Athletics, academics, general events, announcements\n- **Robust Scraping**: Handle pagination, dynamic loading, authentication if needed\n- **Data Standardization**: Follow existing column naming conventions\n- **Error Handling**: Graceful failures with informative error messages\n- **Documentation**: Clear examples and troubleshooting guides\n\n### General Contribution Guidelines\n\n1. Fork the repository on GitHub\n2. Clone your fork locally: `git clone https://github.com/YOUR-USERNAME/hs-scraper-toolkit.git`\n3. Create a feature branch: `git checkout -b add-[school-name]-scrapers`\n4. Install development dependencies: `pip install -e \".[dev]\"`\n5. **Add your school's directory and modules**\n6. **Update documentation and README**\n7. Run tests and ensure code quality\n8. Commit your changes: `git commit -m \"Add [School Name] scrapers\"`\n9. Push to your fork: `git push origin add-[school-name]-scrapers`\n10. Submit a pull request with detailed description\n\n### Development Setup\n\n```bash\n# Clone the repository\ngit clone https://github.com/NCP-Stampede/hs-scraper-toolkit.git\ncd hs-scraper-toolkit\n\n# Install in development mode with dev dependencies\npip install -e \".[dev]\"\n\n# Run tests (when available)\npytest\n\n# Format code\nblack .\n\n# Lint code\nflake8 .\n```\n\n### Questions About Contributing?\n\n- **Check existing issues** for school requests or similar implementations\n- **Open a discussion** on GitHub to propose your school before starting\n- **Look at the Northside modules** (`hs_scraper_toolkit/Northside/`) as examples\n- **Ask questions** in GitHub Issues or Discussions - we're here to help!\n\nWe're excited to see scrapers for schools across the country. Every contribution helps build a more comprehensive toolkit for the high school community!\n\n## Changelog\n\n### Version 1.0.1 (Latest)\n- Fixed package structure for proper PyPI distribution\n- Added easy import from main package (`from hs_scraper_toolkit import ...`)\n- Improved documentation and examples\n- Added comprehensive .gitignore\n- Published to PyPI\n\n### Version 1.0.0\n- Initial release\n- MaxPreps roster scraping\n- Athletic.net track & field scraping\n- Basic package structure\n\n## Support\n\n- **Issues**: Report bugs or request features on [GitHub Issues](https://github.com/NCP-Stampede/hs-scraper-toolkit/issues)\n- **Discussions**: Ask questions or discuss usage on [GitHub Discussions](https://github.com/NCP-Stampede/hs-scraper-toolkit/discussions)\n- **PyPI**: Visit the [PyPI package page](https://pypi.org/project/hs-scraper-toolkit/)\n- **Contributing Schools**: See [CONTRIBUTING.md](CONTRIBUTING.md) for detailed guidelines on adding your school's scrapers\n\n## School Contributions Wanted! \ud83c\udfeb\n\nWe're actively seeking contributors to add scrapers for their high school websites! Whether your school uses:\n\n- **Custom athletics platforms** (TeamUp, SportsEngine, etc.)\n- **District-wide systems** (CPS, NYC DOE, LAUSD)\n- **School-specific websites** with unique structures\n- **Regional athletics associations** \n\nYour contribution can help students, parents, and developers across the country access their school data programmatically.\n\n**Current School Modules:**\n- \u2705 **Northside College Prep** (Chicago, IL) - Athletics Schedule & General Events\n\n**Schools We'd Love to See:**\n- \ud83c\udfaf **Lane Tech College Prep** (Chicago, IL)\n- \ud83c\udfaf **Whitney Young Magnet** (Chicago, IL) \n- \ud83c\udfaf **Walter Payton College Prep** (Chicago, IL)\n- \ud83c\udfaf **Lincoln Park High School** (Chicago, IL)\n- \ud83c\udfaf **Your School Here!**\n\nSee our [detailed contribution guide](CONTRIBUTING.md) for step-by-step instructions on adding your school's scrapers.\n\n## Disclaimer\n\nThis tool is for educational and research purposes. Please respect the terms of service of the websites you scrape and implement appropriate rate limiting and ethical scraping practices.\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A comprehensive toolkit for scraping high school data with school-specific modules",
    "version": "1.1.0",
    "project_urls": {
        "Bug Tracker": "https://github.com/NCP-Stampede/hs-scraper-toolkit/issues",
        "Documentation": "https://github.com/NCP-Stampede/hs-scraper-toolkit#readme",
        "Homepage": "https://github.com/NCP-Stampede/hs-scraper-toolkit",
        "Repository": "https://github.com/NCP-Stampede/hs-scraper-toolkit"
    },
    "split_keywords": [
        "scraping",
        " sports",
        " high school",
        " athletics",
        " maxpreps",
        " athletic.net",
        " track",
        " field",
        " cross-country",
        " school-specific",
        " schedule",
        " events",
        " northside"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "0f83dc04c2e4f16564918e31d5b6d6d44837e3fd5e329e8cff77e8e504b8d866",
                "md5": "4b3054e7b088916f0924a65a79c04a32",
                "sha256": "d5e432a88c89a0cacd87c1c5d915ec873789535226ecd640f74c3d775c08332d"
            },
            "downloads": -1,
            "filename": "hs_scraper_toolkit-1.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "4b3054e7b088916f0924a65a79c04a32",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.7",
            "size": 17041,
            "upload_time": "2025-07-22T15:45:23",
            "upload_time_iso_8601": "2025-07-22T15:45:23.869920Z",
            "url": "https://files.pythonhosted.org/packages/0f/83/dc04c2e4f16564918e31d5b6d6d44837e3fd5e329e8cff77e8e504b8d866/hs_scraper_toolkit-1.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "393fb5dd3ec8062fb6dab81c7b08ce48a20d3bfe900d6be08f72b25792b81950",
                "md5": "4ffc0a6bb998095f72f77afef44d8458",
                "sha256": "b7bab8964fd566163cab3d76272577504d8f1c9b61c006340e28c0b3c922c382"
            },
            "downloads": -1,
            "filename": "hs_scraper_toolkit-1.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "4ffc0a6bb998095f72f77afef44d8458",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.7",
            "size": 19004,
            "upload_time": "2025-07-22T15:45:25",
            "upload_time_iso_8601": "2025-07-22T15:45:25.027045Z",
            "url": "https://files.pythonhosted.org/packages/39/3f/b5dd3ec8062fb6dab81c7b08ce48a20d3bfe900d6be08f72b25792b81950/hs_scraper_toolkit-1.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-22 15:45:25",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "NCP-Stampede",
    "github_project": "hs-scraper-toolkit",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "lcname": "hs-scraper-toolkit"
}
        
Elapsed time: 1.64088s