As Riviet said, you can use LIATE...but its really just common sense. e.g. if you have sinxlnx, you know you cant integrate lnx, so you let u = lnx
When it comes to reduction involving by parts, always look at what the answer looks like. If it has n+1, you know you have to integrate something that will give you an n+1.