You might try this site which seems to offer a direct tourist shuttle service between
Puno and Chivay, which is the main town in the Colca Valley. You will not find a regular direct bus from Puno to Colca. If you are coming from Puno you will have to get off the bus in the middle of the alitiplano at the road junction and wait for a connection to Chivay. Not recommendable at all.
Another option is to go right through to Arequipa, perhaps on an overnight bus, then purchase a two-day tour (they are very reasonable) in Arequipa.
There are direct buses to Chivay from Arequipa if you prefer to do it on your own.
Here are some
posts on the Colca Canyon which may help.