If I have understood your requirements correctly the following should work:
I am going to make the assumption you have already setup your trigger step which is where you are getting the list of download URLs. The following action step should then be a code step which takes this string of URLs as input.
The code step will act as a staging area to prepare output to the final OneDrive action step which will handle the uploading.
In the code step you will need to isolate the individual URLs. If the list of URLs is in a string presumably they are comma delimited. You can store each individual URL in a list using Python's split() function:
url_list = input_data.get("url_list").split(",")
You will need to return a dictionary object in order to use the output in your final OneDrive step, but you want to execute your final step on a list of inputs. So you will need to return a list of dictionary objects. You can do something like the following:
output_list = []
for url in url_list:
ouput_list.append({"url" : url})
And finally return
the output_list
Because you are returning a list the following code step will execute for each item within the list. Because the list contains dictionary objects they will be mapped as url : "someuploadurl" in your following steps. This should allow you to upload multiple files to OneDrive for a given list of URLs.
Further explanation can be found in this answer as well.
Take a look at Zapier's code documentation if you need clarification for getting input from trigger steps into your code step.