The split is returning a list, but you are using an index of that list to do the second split so you are only getting a single element from it. response.text.split('-p-')
gives you a list, but response.text.split('-p-')[-1]
gives you the last element of that list. If you did something like:
links = [x.split('-cat-')[0] for x in response.split('-p-')]
you could maybe get a list of what you wanted, but you might have to do some more processing either by changing the index you get from the '-cat-'
split or by doing another iteration through the list from that split.
The reason you are just getting single letters is because you are iterating through a string and not a list of strings, so it is yielding the characters from the string, instead of individual strings.