Я полностью верю, что вы новичок в питоне.Я пишу правильную, прежде чем объяснить.
for i,url in enumerate(urls):
r = requests.get(url).text
soup = BeautifulSoup(r, 'lxml')
file = open('filename{}.txt'.format(i), 'w')
for article_body in soup.find_all('p'):
body = article_body.text
file.write(body)
file.close()
Причина, по которой i receive only the review from the last URL in the list to all the files
одна переменная для одного значения, поэтому после завершения цикла for вы получите последний результат (третий).Результат первого и второго результата будет переопределен
for url in urls:
r = requests.get(url).text
soup = BeautifulSoup(r, 'lxml')