I don't know if there are any other ways, but I found my BONSLY in the trophy garden. Different pokemon appear in the trophy garden. I go there everyday to check out the different pokemon, that I wouldnt normally see anywhere else. To check what special pokemon is in the trophy garden, go to the man in the purple suit (I don't remember his name). To get to him, go into the Pokemon mansion on route 212. Then, once you're inside, go to the right, and enter the first door you see. There should be a nurse standing next to that door. The guy you need is the one right in front of you (in the purple suit :P) Talk to him, and answer 'YES' to all of the questions he asks (there is only 2 or 3 questions that he asks, I think. He will then tell you about a pokemon that humped his leg or kissed him on the cheek or something. Thats the special pokemon. Then, the old man next to him will run off somewhere. If you need the pokemon that the guy in the purple suit mentioned, go into the trophy garden (at the back of the mansion), and look for him. He is rarer than the other pokemon there, so it might take you a little while to find it.
Hope I helped :)
Hope I helped :)