Since there are a couple of placed in the game loop that you are removing values, it may be that you have removed something from a list already and then try to again.
The in operator can be used to check to see if something is in a list before trying to remove it.
For example:
if (spider in spiderList) and ..... :
spiderList.remove(spider)
The remover statement would only execute if the spider is in the spiderList avoiding the error mentioned.