If the starter motor is turning but the ENGINE is not cranking, try tapping on the gear that engages the flywheel (not while cranking!). Also, spray a bit of WD40 on the shaft where the gear is located.
When the starter is energized, it spins fast enough to cause the gear on the end of the shaft to slide outward against the force of the spring. If the shaft is corroded or the gear is not free to move, it won't slide and will not engage the teeth of the flywheel. The battery has to be strong enough to spin the starter fast enough to cause this movement. I'd start with lubrication and attempting to move the gear along the shaft.