Instructions
Go to a Pokemon Center and place several low-level Pokemon in your party. Silcoon is only level 5, meaning that if you have level 10 or higher Pokemon in your party, you risk killing it in a single hit. If you kill it, you can't catch it.
Travel to the Petalburg Woods, located just south of Rustboro on the western shore of the Hoenn region.
Walk around in the grassy areas, which are speckled throughout the forest. Silcoon lives in the grass. As long as you're walking in grass, there's a one-in-ten chance you'll encounter a Silcoon when a fight starts.
Attack Silcoon with weak maneuvers. Your goal is to get its health meter to turn yellow or red. By weakening it, you greatly increase your odds of capturing it.
Throw a pokeball at Silcoon. If you miss, throw another pokeball the following turn. Keep doing this until Silcoon is yours.