I'd spent many hours trying to figure this out before I came across this post. I was actually trying to save a self generated webpage but was always getting a blank image.
I first tried the code as written and got 10 copies of the google page.
But when I tried a single pass with a self generated webpage using self.load(QUrl().fromLocalFile(url)) in the capture function I got a blank image.
Using file:///C:/Users/User/.... (on a windows machine) in the original code worked but with a blank image on the first pass.
I'm now using self.load(QUrl().fromLocalFile(url)) but overwriting the image until the file size is greater than for a blank page