When I first started learning English, I used to have the same problem; I would hear a word or expression which I had never seen or heard before and not understand it. Sometimes, I could grasp the meaning through the context; most times, however, it proved to be challenging or even unfeasible.
After a while, I developed a technique: whenever I heard an unknown word, I would run for Google Translate and, by its sound, try to spell it there (often incorrectly). The website has a very useful tool: it recognizes what you've typed and it tries to relate it to something that actually exists. The success rate may vary, but it was very helpful to me.
I would do the same with songs that I had listened to, but did not know: pick a verse and type it on Google. More often than not, I would find what I was looking for.
Try it and see if it works for you too!
P.S.: Of course this technique does not make it any less important to read content from different sources, such as magazines, newspapers, online blogs, books, etc. That way, you will build a satisfactory vocabulary and be more prepared to recognize apparently unknown words.