For carpet stains I use Soda Water, it's great!
Pour Soda Water on the stain, leave for a few minutes, then wipe with a clean cotton towel in hard dabbing motions.