As you said, newlist
is the last URL, so naturally when you ask for its indices you get individual letters. You need to create a list before the loop and then append each url to it, instead of setting urls
to the text of each one:
urls = []
for row in rows:
for key in row.custom:
urls.append(row.custom[key].text)
Now urls
is a list where each element is one URL.