All projects

UMass Amherst, DACSS 758 · 2026

Campus Safety Alerts Dataset

Every university publishes its crime alerts differently, so I wrote a scraper for each of ten schools and combined the results into one dataset you can compare across campuses.

Context
UMass Amherst, DACSS 758
Year
2026
Method
Python

Every university publishes safety notices in its own way, so a single crawler doesn't work. I wrote a separate scraper for each of ten schools: ASU, Ohio State, Penn State, UC Berkeley, UMass Amherst, UNC Chapel Hill, UT Austin, UW Madison, University of Florida and University of Washington.

The dataset has 519 documents: 473 individual alert notices, 32 from alert feeds, 11 annual security reports and 3 crime logs. 506 came from web pages and 13 from PDFs. Some campuses don't keep a public archive of alerts, so for those the scraper falls back to the annual security report, and a record_family column marks which kind each row is so they can be analyzed separately.

It also had to be dependable. The scraper retries failed requests, waits between pages so it doesn't overload university servers, and uses cloudscraper for sites that block ordinary requests. Every row stores the source URL, the archive URL, a content hash and a timestamp, so any number taken from the dataset can be traced back to the page it came from.

What the scraper collected, by record family. Counts are from university_incident_reports.csv.
Record familyDocuments
Alert notices473
Alert feeds32
Annual security reports11
Crime logs3

Tools & methods

  • Python
  • BeautifulSoup
  • pdfminer.six
  • cloudscraper
  • requests