The Poisson model is a good way to start with count data. Sometimes the variance around the model predictions is greater than what you might expect from a Poisson model, so you might need to move to a negative binomial model or use a "quasi-Poisson" model that adjusts for the extra variance. There are many pages about those alternatives on this site.
A simple way to incorporate the repeated measurements per Site would be to treat Site as a random effect in a mixed-effects Poisson model. With the R lme4
package you would write a similar model to what you have:
model <- glmglmer(Crossings ~ Season + offset(logdays) + (1|Site),
family = poisson(link = "log"), data = data)
The (1|Site)
term allows for different baseline rates among sites, modeled with a Gaussian distribution. That uses up a lot fewer degrees of freedom than trying to treat 40 sites as individual fixed effects.