Steaming will remove odors to a certain extent. Won't generally remove staining. Have you tried a carpet extractor/shampoo? You can find a gentle shampoo that won't move the colour at all.

After cleaning I highly recommend scotchguard.

Sent from my iPhone (via Tapatalk) so please forgive the spelling mistakes...