If you're using findContours(), you don't need to use Canny Edge Detection. By using Canny first, you're narrowing down the image and giving findContours() less information to work with, and so it's tolerances will cut out anything too small
Here's our code for acquiring the goal, although it is in C++ instead of Python I believe the API is roughly the same