Well it's done, Pi Zero W with a relay.
The power to the router goes through the relay, I just broke into the power cable.
It boots and checks the internet connection every ten seconds, if all is good, the green LED flashes briefly. If it fails to get a response within two minutes, it triggers the relay for ten seconds which drops power to the router. It then sleeps for four minutes to allow the router to restart and reconnect to the internet and then starts checking again.
The relay isn't energised normally, the connection the router goes through is normally closed so I can restart the Pi without causing the router to drop out.
I'm very happy with this. This is the first time I've done anything with the GPIO and although I found some simple Python code to check the internet, I've tweaked the whole thing to work as I want, including the LED flash each time the check is successful.
I did have a problem where the relay would trigger on reboot and it took me a while to work out what was actually happening. The Pi was booting and starting my Python routine before the WiFi had a chance to connect and so it was seeing what it thought was an internet drop and going into the reboot routine. A simple sleep command in the appropriate crontab entry to just wait fifteen seconds before starting was a nice straightforward fix.
In my mind, this is what the Pi is all about, thinking of something it can do and then finding a way to do it. This only occurred to me on Wednesday afternoon and now, three days later, I've done it!