You have a couple problems here.
P.many1 $ pNumber <* (string "END") ... which is the same as ... P.many1 (pNumber <* string "END")
In other words it matches 111 END 222 END 333 END. Try this:
ns <- (P.many1 pNumber) <* string "END"
This almost works, but when you actually run it you'll get an infinite loop. The reason is because pNumber if it doesn't find a match it will never actually fail, therefore many1 will continue using it forever attempting to find a match that will never occur. The reason why it never fails is that it is composed of combinators that never fail, pSkipSpaces and itself are both composed entirely of takeWhiles, which if they don't find a match they just continue on without doing anything. If you make a small change though:
term <- P.takeWhile1 (\c -> c >= 0x31 && c <= 0x39)
then it works fine.