# hs-scraper-toolkit
[](https://badge.fury.io/py/hs-scraper-toolkit)
[](https://www.python.org/downloads/)
[](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[](https://badge.fury.io/py/hs-scraper-toolkit)\n[](https://www.python.org/downloads/)\n[](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"
}